nfs32100 Posted September 6, 2013 Posted September 6, 2013 Salut,am si eu acest inventar(l-am cautat vreo 3 zile) am rezolvat la el mici errori si nu pre stiu cum sa fac comenzile "/giveitem playerid slot" si "/sellitem playerid slot amount".Ma poate ajuta cineva va multumesc.[pawn]#include <a_samp>#include <Dini>#define YELLOW 0xFFFF00FF//============ Defines of Bag IDS#define MAX_ITEMS 10#define BAGCOUNT 5#define EMPTY_BAGSPACE -1#define ecard 1#define smedal 2#define gmedal 3#define mayorsig 4#define swatsig 5#define sdoc1 6#define sdoc2 7#define sdoc3 8#define sdoc4 9#define sdocfull 10new Bags[MAX_PLAYERS][bAGCOUNT];new ItemNames[MAX_ITEMS][32] ={{"Electronic Card"},{"S Medal"},{"G Medal"},{"Mayor Sig"},{"Swat Sig"},{"S Document 1"},{"S Document 2"},{"S Document 3"},{"S Document 4"},{"S Full Document"}};main();public OnGameModeInit(){ SetGameModeText("test"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1;}public OnPlayerConnect(playerid){// Resets for(new s; s < BAGCOUNT; s++) { Bags[playerid] = EMPTY_BAGSPACE; } // Loads LoadPlayerBagFromFile(playerid);}public OnPlayerDisconnect(playerid){// Save SavePlayerBagToFile(playerid);}public OnPlayerRequestClass(playerid, classid){ SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1;}public OnPlayerCommandText(playerid, cmdtext[]){ if(strcmp(cmdtext, "/mybag", true) == 0) { new bagitem[128]; SendClientMessage(playerid, YELLOW, "-----------------------------------------------"); SendClientMessage(playerid, YELLOW, " Your Bag"); SendClientMessage(playerid, YELLOW, "-----------------------------------------------"); for (new i = 0; i < BAGCOUNT; i++) { if (Bags[playerid] == EMPTY_BAGSPACE) format(bagitem, sizeof(bagitem), "Item %d: ", i + 1); else format(bagitem, sizeof(bagitem), "Item %d: %s", i + 1, ItemNames[bags[playerid] - 1]); SendClientMessage(playerid, 0xffffffff, bagitem); } SendClientMessage(playerid, YELLOW, "-----------------------------------------------"); return 1; } if(strcmp(cmdtext, "/killbag", true) == 0) { for(new s; s < BAGCOUNT; s++) { Bags[playerid] = EMPTY_BAGSPACE; } SendClientMessage(playerid, YELLOW, "[ ! ] Your bag is now empty!"); return 1; } if(strcmp(cmdtext, "/putecard", true) == 0) { new space = FindPlayerBagSpace(playerid); if (space == EMPTY_BAGSPACE) return SendClientMessage(playerid, YELLOW, "[ ! ] Your bag is full!"); Bags[playerid][space] = ecard; SendClientMessage(playerid, YELLOW, "[ ! ] You have got an electing card !"); return 1; } return 0;}stock FindPlayerBagSpace(playerid){ for(new s; s < BAGCOUNT; s++) { if (Bags[playerid] == EMPTY_BAGSPACE) return s; } return EMPTY_BAGSPACE;}stock Player(playerid){ new player[MAX_PLAYER_NAME]; GetPlayerName(playerid, player, sizeof(player)); return player;}stock i_path(playerid){ new a[256]; format(a, sizeof(a), "%s's_Bag.ini",Player(playerid)); return a;}stock SavePlayerBagToFile(playerid){ if(!dini_Exists(i_path(playerid))) dini_Create(i_path(playerid)); new bagdinikey[256], bagitemline[256]; for(new i = 0; i < BAGCOUNT; i++){ format(bagdinikey, 256, "slot:%d", i+1); format(bagitemline, 256, "%d", Bags[playerid]); dini_Set(i_path(playerid), bagdinikey, bagitemline); } return 1;}stock LoadPlayerBagFromFile(playerid){ new filename[256]; format(filename, sizeof(filename), "%s's_Bag.ini", Player(playerid)); if (fexist(filename)) { new File: BagFile; BagFile = fopen(filename, io_read); if(BagFile) { new key[128]; new Data[128]; while(fread(BagFile, Data, sizeof(Data))) { key = ini_GetKey(Data); if(strcmp(key, "slot:1", true)==0) { Bags[playerid][0]=strval(ini_GetValue(Data)); } if(strcmp(key, "slot:2", true)==0) { Bags[playerid][1]=strval(ini_GetValue(Data)); } if(strcmp(key, "slot:3", true)==0) { Bags[playerid][2]=strval(ini_GetValue(Data)); } if(strcmp(key, "slot:4", true)==0) { Bags[playerid][3]=strval(ini_GetValue(Data)); } if(strcmp(key, "slot:5", true)==0) { Bags[playerid][4]=strval(ini_GetValue(Data)); } } } fclose(BagFile); } return 1;}stock ini_GetKey(line[]){ new keyRes[128]; keyRes[0] = 0; if(strfind(line, "=", true) == -1) return keyRes; strmid(keyRes, line, 0, strfind(line, "=", true), sizeof(keyRes)); return keyRes;}stock ini_GetValue(line[]){ new valRes[128]; valRes[0] = 0; if(strfind(line, "=", true) == -1) return valRes; strmid(valRes, line, strfind(line, "=", true)+1, strlen(line), sizeof(valRes)); return valRes;} [/pawn]
nfs32100 Posted September 7, 2013 Author Posted September 7, 2013 Poti macar sa-mi dai un model pentru comanda /giveitem(trebuie sa trimita jucator catre jucator).
Gireada Posted September 7, 2013 Posted September 7, 2013 CMD:giveitem(playerid, params[]){ new giveplayerid,slot; if(unformat(params, "ui", giveplayerid,slot)) return SendClientMessage(playerid, -1, "Foloseste: /giveitem [playerid] [slot]"); return 1;}Atata iti dau de acolo de descurci. Citeste Tutorialul nu astepta modele
Question
nfs32100
Salut,am si eu acest inventar(l-am cautat vreo 3 zile) am rezolvat la el mici errori si nu pre stiu cum sa fac comenzile "/giveitem playerid slot" si "/sellitem playerid slot amount".Ma poate ajuta cineva va multumesc.
[pawn]
#include <a_samp>
#include <Dini>
#define YELLOW 0xFFFF00FF
//============ Defines of Bag IDS
#define MAX_ITEMS 10
#define BAGCOUNT 5
#define EMPTY_BAGSPACE -1
#define ecard 1
#define smedal 2
#define gmedal 3
#define mayorsig 4
#define swatsig 5
#define sdoc1 6
#define sdoc2 7
#define sdoc3 8
#define sdoc4 9
#define sdocfull 10
new Bags[MAX_PLAYERS][bAGCOUNT];
new ItemNames[MAX_ITEMS][32] =
{
{"Electronic Card"},
{"S Medal"},
{"G Medal"},
{"Mayor Sig"},
{"Swat Sig"},
{"S Document 1"},
{"S Document 2"},
{"S Document 3"},
{"S Document 4"},
{"S Full Document"}
};
main();
public OnGameModeInit()
{
SetGameModeText("test");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnPlayerConnect(playerid)
{
// Resets
for(new s; s < BAGCOUNT; s++)
{
Bags[playerid] = EMPTY_BAGSPACE;
}
// Loads
LoadPlayerBagFromFile(playerid);
}
public OnPlayerDisconnect(playerid)
{
// Save
SavePlayerBagToFile(playerid);
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/mybag", true) == 0)
{
new bagitem[128];
SendClientMessage(playerid, YELLOW, "-----------------------------------------------");
SendClientMessage(playerid, YELLOW, " Your Bag");
SendClientMessage(playerid, YELLOW, "-----------------------------------------------");
for (new i = 0; i < BAGCOUNT; i++)
{
if (Bags[playerid] == EMPTY_BAGSPACE) format(bagitem, sizeof(bagitem), "Item %d: ", i + 1);
else format(bagitem, sizeof(bagitem), "Item %d: %s", i + 1, ItemNames[bags[playerid] - 1]);
SendClientMessage(playerid, 0xffffffff, bagitem);
}
SendClientMessage(playerid, YELLOW, "-----------------------------------------------");
return 1;
}
if(strcmp(cmdtext, "/killbag", true) == 0)
{
for(new s; s < BAGCOUNT; s++)
{
Bags[playerid] = EMPTY_BAGSPACE;
}
SendClientMessage(playerid, YELLOW, "[ ! ] Your bag is now empty!");
return 1;
}
if(strcmp(cmdtext, "/putecard", true) == 0)
{
new space = FindPlayerBagSpace(playerid);
if (space == EMPTY_BAGSPACE) return SendClientMessage(playerid, YELLOW, "[ ! ] Your bag is full!");
Bags[playerid][space] = ecard;
SendClientMessage(playerid, YELLOW, "[ ! ] You have got an electing card !");
return 1;
}
return 0;
}
stock FindPlayerBagSpace(playerid)
{
for(new s; s < BAGCOUNT; s++)
{
if (Bags[playerid] == EMPTY_BAGSPACE) return s;
}
return EMPTY_BAGSPACE;
}
stock Player(playerid)
{
new player[MAX_PLAYER_NAME];
GetPlayerName(playerid, player, sizeof(player));
return player;
}
stock i_path(playerid)
{
new a[256];
format(a, sizeof(a), "%s's_Bag.ini",Player(playerid));
return a;
}
stock SavePlayerBagToFile(playerid){
if(!dini_Exists(i_path(playerid))) dini_Create(i_path(playerid));
new bagdinikey[256], bagitemline[256];
for(new i = 0; i < BAGCOUNT; i++){
format(bagdinikey, 256, "slot:%d", i+1);
format(bagitemline, 256, "%d", Bags[playerid]);
dini_Set(i_path(playerid), bagdinikey, bagitemline);
}
return 1;
}
stock LoadPlayerBagFromFile(playerid)
{
new filename[256];
format(filename, sizeof(filename), "%s's_Bag.ini", Player(playerid));
if (fexist(filename))
{
new File: BagFile;
BagFile = fopen(filename, io_read);
if(BagFile)
{
new key[128];
new Data[128];
while(fread(BagFile, Data, sizeof(Data)))
{
key = ini_GetKey(Data);
if(strcmp(key, "slot:1", true)==0)
{
Bags[playerid][0]=strval(ini_GetValue(Data));
}
if(strcmp(key, "slot:2", true)==0)
{
Bags[playerid][1]=strval(ini_GetValue(Data));
}
if(strcmp(key, "slot:3", true)==0)
{
Bags[playerid][2]=strval(ini_GetValue(Data));
}
if(strcmp(key, "slot:4", true)==0)
{
Bags[playerid][3]=strval(ini_GetValue(Data));
}
if(strcmp(key, "slot:5", true)==0)
{
Bags[playerid][4]=strval(ini_GetValue(Data));
}
}
}
fclose(BagFile);
}
return 1;
}
stock ini_GetKey(line[])
{
new keyRes[128];
keyRes[0] = 0;
if(strfind(line, "=", true) == -1) return keyRes;
strmid(keyRes, line, 0, strfind(line, "=", true), sizeof(keyRes));
return keyRes;
}
stock ini_GetValue(line[])
{
new valRes[128];
valRes[0] = 0;
if(strfind(line, "=", true) == -1) return valRes;
strmid(valRes, line, strfind(line, "=", true)+1, strlen(line), sizeof(valRes));
return valRes;
}
[/pawn]
3 answers to this question
Recommended Posts