Kako napraviti sustav organizacija od nule?
by Joey_
O ÄŒEMU SE RADI?
- U ovom tutorialu ću vam pokazati kako napraviti sustav organizacija od nule. To znaÄi da ćete pri kraju tutorial znati kako to sami napraviti.
- U tutorialu ćete nauÄiti kako napraviti da ako je igraÄ Älan neke organizacije da kad se spoji na server da ga spawna u njegovoj bazi. NauÄiti ćete i kako napraviti neke lider komande tipa /invite, /izbaci, /rankup. I joÅ¡ neke stvari koje ćete sami otkriti Äitajući tutorial.
- Te u ovom tutorialu se podrazumijeva da imate neki register/login sustav u vaÅ¡em modu i da znate kako dodati nove varijable za spremanje/uÄitavanje u vaÅ¡ register/login sustav.
POTREBNE STVARI
- Za ovaj tutorial će vam bit potreban ZCMD include (Download (http://solidfiles.com/d/879d1213462fc1562d16d464e90c8cf9)).
- Bit će potreban i sscanf plugin (Win Download (http://dl.dropbox.com/u/21683085/sscanf.rarl) | Linux Download (http://www.sendspace.com/file/qgdgnc)).
- I još će vam biti potreban foreach include (Download (http://pastebin.com/Seseuh2x))
IGRAÄŒEVE VARIJABLE
- Morate dodati joÅ¡ 3 varijable u svoj enum tako da bi skripta mogla pamtiti u kojoj je organizaciji igraÄ.
- I morate dodat ovaj macro (#define) koji oznaÄava maksimalan broj organizacija i joÅ¡ 2 boje koje koristim u tutorialu.
- Ovako to kod mene izgleda (vi vjerojatno imate drugaÄije nego Å¡to ja imam):
- NAPOMENA: Kako si vi definirate varijable ovdje tako ćete morate imat kroz cijelu skriptu jer ja koristim neke druge nazive varijabli nego vi.
#define MAX_ORGS 2 // Ovo je maksimalni broj organizacija na serveru, kad dodate novu organizaciju, povecajte ga za 1
#define C_WHITE 0xFFFFFFAA
#define CRED "{FF0000}"
enum E_PLAYER_DATA
{
E_PLAYER_LEADER, // Varijabla koja pamti cega je igrac lider
E_PLAYER_MEMBER, // Varijabla koja pamti u kojoj je igrac organizaciji
E_PLAYER_RANK, // Varijabla koja pamti koji je igrac rank u organizaciji
E_PLAYER_SKIN, // Varijabla koja pamti koji skin je igrac imao prije ulaska u organizaciju
E_PLAYER_ORG_SKIN, // Varijabla koja pamti koji skin igrac ima dok je u organizaciji
E_PLAYER_MATS, // Varijabla koja pamti koliko igrac ima materijala kod sebe
E_PLAYER_DROGS // Varijabla koja pamti koliko igrac ima droge kod sebe
}
new
gPlayerData[MAX_PLAYERS][E_PLAYER_DATA];
KOMANDA /makeleader
- Ispod se nalazi komanda /makeleader, sve je objašnjeno unutar nje.
- U ovoj komandi ako nemate iste nazive varijabli kao ja, morate ih zamijeniti svojim nazivima. InaÄe neće raditi kako treba.
- Unutar tog koda, tj. ispod komande se nalazi jedna funkcija koju morate dodati na kraj svoje skripte. Ta funkcija preko ID-a kojeg proslijedite u funkciju, vraća ime organizacije koja ima taj ID.
CMD:makeleader(playerid, params[])
{
if (IsPlayerAdmin(playerid)) // Provjerava da li je igrac RCON admin, vi to mozete promijeniti u svoju provjeru
{
new
iPlayerID,
iOrgID,
szPlayerName[MAX_PLAYER_NAME],
szMessage[105];
if (sscanf(params, "ud", iPlayerID, iOrgID)) // Ako igrac nije upisao sve potrebne parametre, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "KORISTI: /makeleader [igracev ID/dio imena] [ID organizacije]");
else if (iPlayerID == INVALID_PLAYER_ID) // Ako je ID igraca koji je igrac upisao nije online, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "ERROR: Pogresan ID igraca.");
else if (iOrgID < 1 || iOrgID > MAX_ORGS) // Ako je ID organizacije koju je igrac upisao manja od 1 ili veca maksimalnog broja organizacija, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "ERROR: ID organizacije ne smije biti manji od 1 ili veci od "#MAX_ORGS);
gPlayerData[iPlayerID][E_PLAYER_LEADER] = iOrgID; // Postavlja igracevu varijablu za lidera na ID organizacije, jer moramo negdje zapamtit koje organizacije je igrac lider
gPlayerData[iPlayerID][E_PLAYER_RANK] = 6; // Postavlja igracevu varijablu za rank na 6, to vi mozete promijeniti ako ne zelite da vam je najveci rank 6
switch(iOrgID)
{
case 1: // Prva organizacija, nazovimo je Los Santos Police Department
{
gPlayerData[iPlayerID][E_PLAYER_SKIN] = GetPlayerSkin(iPlayerID); // Sprema igracev skin tako da ako ikad bude izbacen iz organizacije, dobija svoj stari skin natrag
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 283; // Broj 283 je ID skina lidera organizacije, to mozete promijeniti u koji kod skin ID vi zelite
SetPlayerSkin(iPlayerID, gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN]); // Postavlja igracu skin za lidera organizacije
}
// Ovaj kod ispod kao da ne postoji, ali vam prikazuje kako dodati jos jednu organizaciju u /makeleader komandu, sto je potrebno svaki put kada zelite dodati novu organizaciju
/*case 2: // Druga organizacije, nazovimo je FBI
{
gPlayerData[iPlayerID][E_PLAYER_SKIN] = GetPlayerSkin(iPlayerID); // Sprema igracev skin tako da ako ikad bude izbacen iz organizacije, dobija svoj stari skin natrag
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 283; // Broj 283 je ID skina lidera organizacije, to mozete promijeniti u koji kod skin ID vi zelite
SetPlayerSkin(iPlayerID, gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN]); // Postavlja igracu skin za lidera organizacije
}*/
}
GetPlayerName(playerid, szPlayerName, MAX_PLAYER_NAME);
format(szMessage, sizeof(szMessage), "INFO: Admin %s vas je postavio za lidera organizacije %s", szPlayerName, GetOrgNameByID(iOrgID));
SendClientMessage(iPlayerID, C_WHITE, szMessage);
GetPlayerName(iPlayerID, szPlayerName, MAX_PLAYER_NAME);
format(szMessage, sizeof(szMessage), "INFO: Postavio si igraca %s za lidera organizacije %s", szPlayerName, GetOrgNameByID(iOrgID));
SendClientMessage(playerid, C_WHITE, szMessage);
}
else
SendClientMessage(playerid, C_WHITE, "ERROR: Moras biti RCON admin da koristis ovu komandu.");
return 1;
}
stock GetOrgNameByID(iOrgID)
{
new
szOrgName[29];
switch(iOrgID)
{
case 1: // Prva organizacija, nazovimo je Los Santos Police Department
szOrgName = "Los Santos Police Department";
default: // Ako ne postoji ID takve organizacije
szOrgName = "Nepoznata organizacija";
}
return szOrgName;
}
KOMANDA /invite
- Ispod se nalazi komanda /invite, sve je objašnjeno unutar nje.
- U ovoj komandi ako nemate iste nazive varijabli kao ja, morate ih zamijeniti svojim nazivima. InaÄe neće raditi kako treba.
- Unutar tog koda, tj. ispod komande se nalazi OnDialogResponse callback kojeg morate dodat (ako ga nemate uopće u skripti) ili ako ga imate u skripti onda morate dodat kod unutar njega tako da bi skripta radilo kako treba.
CMD:invite(playerid, params[])
{
if (gPlayerData[playerid][E_PLAYER_LEADER] > 0) // Provjerava da li je igrac lider icega
{
new
iPlayerID,
szPlayerName[MAX_PLAYER_NAME],
szInviteMsg[241];
if (sscanf(params, "u", iPlayerID)) // Ako igrac nije upisao sve potrebne parametre, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "KORISTI: /invite [igracev ID/dio imena]");
else if (iPlayerID == INVALID_PLAYER_ID) // Ako je ID igraca koji je igrac upisao nije online, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "ERROR: Pogresan ID igraca.");
GetPlayerName(playerid, szPlayerName, MAX_PLAYER_NAME);
switch(gPlayerData[playerid][E_PLAYER_LEADER])
{
case 1: // Prva organizacija, nazovimo je Los Santos Police Department
{
gPlayerData[iPlayerID][E_PLAYER_MEMBER] = gPlayerData[playerid][E_PLAYER_LEADER]; // Ovdje postavljamo igracu kojeg zelimo pozvati u organizaciju varijablu na ID organizacije (tako da kasnije znamo u kojoj je organizaciji)
gPlayerData[iPlayerID][E_PLAYER_RANK] = 1; // Postavlja igracu kojeg zelimo pozvati u organizaciju rank na 1
// Ovdje formatiramo poruku koju cemo poslati igracu koji je pozvan u organizaciju
// Preko te poruke ce pozvani igrac prihvatiti ili ne prihvatiti ulazak u organizaciju
format(szInviteMsg, sizeof(szInviteMsg), "Lider %s vas je pozvao u organizaciju Los Santos Police Department.\n\nPritisnite tipku 'Prihvacam' ako zelite prihvatiti poziv za ulazak u tu organizaciju\nili pritisnite tipku 'Odbijam' ako ne zelite prihvatiti.", szPlayerName);
}
// Ovaj kod ispod kao da ne postoji, ali vam prikazuje kako dodati jos jednu organizaciju u /invite komandu, sto je potrebno svaki put kada zelite dodati novu organizaciju
/*case 2: // Druga organizacije, nazovimo je FBI
{
gPlayerData[iPlayerID][E_PLAYER_MEMBER] = gPlayerData[playerid][E_PLAYER_LEADER]; // Ovdje postavljamo igracu kojeg zelimo pozvati u organizaciju varijablu na ID organizacije (tako da kasnije znamo u kojoj je organizaciji)
gPlayerData[iPlayerID][E_PLAYER_RANK] = 1; // Postavlja igracu kojeg zelimo pozvati u organizaciju rank na 1
// Ovdje formatiramo poruku koju cemo poslati igracu koji je pozvan u organizaciju
// Preko te poruke ce pozvani igrac prihvatiti ili ne prihvatiti ulazak u organizaciju
// Kad dodajete novu organizaciju, morate promijeniti neke nazive u tekstu kako ne bi svaki tekst bio isti (govorim o imenu organizacije)
format(szInviteMsg, sizeof(szInviteMsg), "Lider %s vas je pozvao u organizaciju FBI.\n\nPritisnite tipku 'Prihvacam' ako zelite prihvatiti poziv za ulazak u tu organizaciju\nili pritisnite tipku 'Odbijam' ako ne zelite prihvatiti.", szPlayerName);
}*/
}
ShowPlayerDialog(iPlayerID, DIALOG_ORG_INVITE, DIALOG_STYLE_MSGBOX, "POZVANI STE U ORGANIZACIJU", szInviteMsg, "Prihvacam", "Odbijam");
}
else
SendClientMessage(playerid, C_WHITE, "ERROR: Moras biti lider da koristis ovu komandu.");
return 1;
}
#define DIALOG_ORG_INVITE 1 // Ovo morate dodati kod ostalih macroa (#define) ili na vrh skripte poslije #include
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_ORG_INVITE: // Ovdje ce se izvrsiti daljnji kod nakon sto je igrac pritisnuo 'Prihvacam' ili 'Ne prihvacam'
{
if (response) // Ako je igrac pritisnuo 'Prihvacam'
{
switch(gPlayerData[playerid][E_PLAYER_MEMBER])
{
case 1: // Prva organizacija, nazovimo je Los Santos Police Department
{
SetPlayerSkin(playerid, 280); // Broj 280 je ID skina za rank 1 u organizaciji LSPD, vi to mozete promijeniti na bilo koji ID skina koji vama odgovara
SendClientMessage(playerid, C_WHITE, "INFO: Prihvatili ste poziv za ulazak u "CRED"Los Santos Police Department");
}
}
}
else // Ako je igrac pritisnuo 'Ne prihvacam'
{
// Resetiramo igraceve varijable na 0 jer nije prihvatio ulazak u organizaciju
gPlayerData[playerid][E_PLAYER_MEMBER] = 0;
gPlayerData[playerid][E_PLAYER_RANK] = 0;
SendClientMessage(playerid, C_WHITE, "INFO: Odbili ste poziv za ulazak u organizaciju");
}
}
}
return 1;
}
KOMANDA /rankup
- Ispod se nalazi komanda /rankup, sve je objašnjeno unutar nje.
- U ovoj komandi ako nemate iste nazive varijabli kao ja, morate ih zamijeniti svojim nazivima. InaÄe neće raditi kako treba.
CMD:rankup(playerid, params[])
{
if (gPlayerData[playerid][E_PLAYER_LEADER] > 0) // Provjerava da li je igrac lider icega
{
new
iPlayerID,
iRankNum,
szPlayerName[MAX_PLAYER_NAME],
szMessage[71];
if (sscanf(params, "ud", iPlayerID, iRankNum)) // Ako igrac nije upisao sve potrebne parametre, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "KORISTI: /rankup [igracev ID/dio imena] [rank]");
else if (iPlayerID == INVALID_PLAYER_ID) // Ako je ID igraca koji je igrac upisao nije online, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "ERROR: Pogresan ID igraca.");
else if (iRankNum < 1 || iRankNum > 6) // Ako je broj ranka manji od 1 ili veci od 6, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "ERROR: ID organizacije ne smije biti manji od 1 ili veci od 6.");
else if (gPlayerData[iPlayerID][E_PLAYER_MEMBER] != gPlayerData[playerid][E_PLAYER_LEADER]) // Provjerava da li su igrac i ID igraca koji je upisao u istoj organizaciji
return SendClientMessage(playerid, C_WHITE, "ERROR: Taj igrac nije u vasoj organizaciji.");
gPlayerData[iPlayerID][E_PLAYER_RANK] = iRankNum; // Postavlja igracevu varijablu na broj ranka, tako da bi kasnije mogli znati koji je igrac rank
SetPlayerOrgSkin(iPlayerID, ((gPlayerData[iPlayerID][E_PLAYER_LEADER] > 0) ? (gPlayerData[iPlayerID][E_PLAYER_LEADER]) : (gPlayerData[iPlayerID][E_PLAYER_MEMBER])), iRankNum);
GetPlayerName(playerid, szPlayerName, MAX_PLAYER_NAME);
format(szMessage, sizeof(szMessage), "INFO: Lider %s ti je postavio rank na "CRED"%d", szPlayerName, iRankNum);
SendClientMessage(iPlayerID, C_WHITE, szMessage);
GetPlayerName(iPlayerID, szPlayerName, MAX_PLAYER_NAME);
format(szMessage, sizeof(szMessage), "INFO: Postavio si clanu %s rank na "CRED"%d", szPlayerName, iRankNum);
SendClientMessage(playerid, C_WHITE, szMessage);
}
else
SendClientMessage(playerid, C_WHITE, "ERROR: Moras biti lider da koristis ovu komandu.");
return 1;
}
stock SetPlayerOrgSkin(iPlayerID, iOrgID, iRank)
{
switch(iOrgID)
{
case 1: // Prva organizacija, nazovimo je Los Santos Police Department
{
switch(iRank) // Rankovi za prvu organizaciju
{
case 1: // 1. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 284; // 284 je ID skina za 1. rank u LSPD organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 2: // 2. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 280; // 280 je ID skina za 2. rank u LSPD organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 3: // 3. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 281; // 281 je ID skina za 3. rank u LSPD organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 4: // 4. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 282; // 282 je ID skina za 4. rank u LSPD organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 5: // 5. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 282; // 282 je ID skina za 5. rank u LSPD organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 6: // 6. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 288; // 288 je ID skina za 6. rank u LSPD organizaciji i taj broj mjenjate u svoj ID skina koji zelite
default:
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 284; // Ovaj ID skina neka vam bude uvijek jednak 1. ranku, on je tu samo ako je doslo do neke greske kod broja ranka
}
}
// Ovaj kod ispod kao da ne postoji, ali vam prikazuje kako dodati jos jednu organizaciju, sto je potrebno svaki put kada zelite dodati novu organizaciju
/*case 2: // Druga organizacija, nazovimo je FBI
{
switch(iRank) // Rankovi za drugu organizaciju
{
case 1: // 1. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 166; // 166 je ID skina za 1. rank u FBI organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 2: // 2. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 166; // 166 je ID skina za 2. rank u FBI organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 3: // 3. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 165; // 165 je ID skina za 3. rank u FBI organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 4: // 4. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 165; // 165 je ID skina za 4. rank u FBI organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 5: // 5. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 286; // 286 je ID skina za 5. rank u FBI organizaciji i taj broj mjenjate u svoj ID skina koji zelite
case 6: // 6. Rank
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 286; // 286 je ID skina za 6. rank u FBI organizaciji i taj broj mjenjate u svoj ID skina koji zelite
default:
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 166; // Ovaj ID skina neka vam bude uvijek jednak 1. ranku, on je tu samo ako je doslo do neke greske kod broja ranka
}
}*/
}
SetPlayerSkin(iPlayerID, gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN]);
return 1;
}
KOMANDA /izbaci
- Ispod se nalazi komanda /izbaci, sve je objašnjeno unutar nje.
- U ovoj komandi ako nemate iste nazive varijabli kao ja, morate ih zamijeniti svojim nazivima. InaÄe neće raditi kako treba.
CMD:izbaci(playerid, params[])
{
if (gPlayerData[playerid][E_PLAYER_LEADER] > 0) // Provjerava da li je igrac lider icega
{
new
iPlayerID,
szPlayerName[MAX_PLAYER_NAME],
szMessage[68];
if (sscanf(params, "u", iPlayerID)) // Ako igrac nije upisao sve potrebne parametre, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "KORISTI: /izbaci [igracev ID/dio imena]");
else if (iPlayerID == INVALID_PLAYER_ID) // Ako je ID igraca koji je igrac upisao nije online, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "ERROR: Pogresan ID igraca.");
else if (gPlayerData[iPlayerID][E_PLAYER_MEMBER] != gPlayerData[playerid][E_PLAYER_LEADER]) // Provjerava da li su igrac i ID igraca koji je upisao u istoj organizaciji
return SendClientMessage(playerid, C_WHITE, "ERROR: Taj igrac nije u vasoj organizaciji.");
gPlayerData[iPlayerID][E_PLAYER_MEMBER] = 0; // Resetira igracevu varijablu jer vise nije u organizaciji
gPlayerData[iPlayerID][E_PLAYER_RANK] = 0; // Resetira igracevu varijablu jer vise nije u organizaciji
gPlayerData[iPlayerID][E_PLAYER_ORG_SKIN] = 0; // Resetira igracevu varijablu jer vise nije u organizaciji
SetPlayerSkin(iPlayerID, gPlayerData[iPlayerID][E_PLAYER_SKIN]); // Vraca igracev skin koji je imao prije ulaska u organizaciju
GetPlayerName(playerid, szPlayerName, MAX_PLAYER_NAME);
format(szMessage, sizeof(szMessage), "INFO: Lider %s te je izbacio iz organizacije.", szPlayerName);
SendClientMessage(iPlayerID, C_WHITE, szMessage);
GetPlayerName(iPlayerID, szPlayerName, MAX_PLAYER_NAME);
format(szMessage, sizeof(szMessage), "INFO: Izbacio si clana %s iz organizacije.", szPlayerName);
SendClientMessage(playerid, C_WHITE, szMessage);
}
else
SendClientMessage(playerid, C_WHITE, "ERROR: Moras biti lider da koristis ovu komandu.");
return 1;
}
KOMANDA (/r)adio
- Ispod se nalazi komanda (/r)adio, sve je objašnjeno unutar nje.
- U ovoj komandi ako nemate iste nazive varijabli kao ja, morate ih zamijeniti svojim nazivima. InaÄe neće raditi kako treba.
- Ispod koda komande se nalazi funkcija GetPlayerRank() koja je potrebna da kod radi kako treba.
CMD:r(playerid, params[])
{
if (gPlayerData[playerid][E_PLAYER_MEMBER] > 0 || gPlayerData[playerid][E_PLAYER_LEADER] > 0)
{
new
szChatMsg[128],
szPlayerName[MAX_PLAYER_NAME],
szMessage[128];
if (sscanf(params, "s[128]", szChatMsg)) // Ako igrac nije upisao sve potrebne parametre, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "KORISTI: (/r)adio [tekst]");
GetPlayerName(playerid, szPlayerName, MAX_PLAYER_NAME);
foreach(new iPlayerID : Player)
{
// Prolazi kroz sve online igrace i provjerava da li su u istoj organizaciji kao i posiljatelj poruke
if (gPlayerData[iPlayerID][E_PLAYER_MEMBER] == gPlayerData[playerid][E_PLAYER_MEMBER] || gPlayerData[iPlayerID][E_PLAYER_LEADER] == gPlayerData[playerid][E_PLAYER_LEADER])
{
format(szMessage, sizeof(szMessage), "%s %s kaze: %s", GetPlayerRank(playerid), szPlayerName, szChatMsg);
SendClientMessage(iPlayerID, C_WHITE, szMessage);
}
}
}
else
SendClientMessage(playerid, C_WHITE, "ERROR: Moras biti clan neke organizacije da koristis ovu komandu.");
return 1;
}
CMD:radio(playerid, params[])
return cmd_r(playerid, params);
stock GetPlayerRank(iPlayerID)
{
new
szRankName[16], // Broj 16 morate promijeniti ako imate rank ime vece od 15 znakova
iPlayerOrg = (gPlayerData[iPlayerID][E_PLAYER_MEMBER] > 0) ? (gPlayerData[iPlayerID][E_PLAYER_MEMBER]) : (gPlayerData[iPlayerID][E_PLAYER_LEADER]);
switch(iPlayerOrg)
{
case 1: // Prva organizacija, nazovimo je Los Santos Police Department
{
switch(gPlayerData[iPlayerID][E_PLAYER_RANK]) // Rankovi za prvu organizaciju
{
case 1: // 1. Rank
szRankName = "Vježbenik";
case 2: // 2. Rank
szRankName = "Kadet";
case 3: // 3. Rank
szRankName = "Policajac";
case 4: // 4. Rank
szRankName = "Viši Policajac";
case 5: // 5. Rank
szRankName = "Narednik";
case 6: // 6. Rank
szRankName = "PoruÄnik";
default:
szRankName = "Nepoznato";
}
}
// Ovaj kod ispod kao da ne postoji, ali vam prikazuje kako dodati jos jednu organizaciju, sto je potrebno svaki put kada zelite dodati novu organizaciju
/*case 1: // Druga organizacija, nazovimo je FBI
{
switch(gPlayerData[iPlayerID][E_PLAYER_RANK]) // Rankovi za drugu organizaciju
{
case 1: // 1. Rank
szRankName = "Vojnik";
case 2: // 2. Rank
szRankName = "Vojnik";
case 3: // 3. Rank
szRankName = "Zapovjednik";
case 4: // 4. Rank
szRankName = "Zapovjednik";
case 5: // 5. Rank
szRankName = "Zapovjednik";
case 6: // 6. Rank
szRankName = "General";
default:
szRankName = "Nepoznato";
}
}*/
}
return szRankName;
}
KOD ZA SPAWNANJE IGRACA U NJEGOVOJ BAZI
- Ovaj kod spawn igraca u njegovoj bazi i postavlja mu skin koja mora imat dok je u organizaciji.
- Ako vec imate svoj OnPlayerSpawn callback onda samo dodajte u njega ovaj kod ispod, a ako nemate OnPlayerSpawn callback onda dodajte cijeli callback u svoj mod.
- U ovom kodu ako nemate iste nazive varijabli kao ja, morate ih zamijeniti svojim nazivima. InaÄe neće raditi kako treba.
public OnPlayerSpawn(playerid)
{
if (gPlayerData[playerid][E_PLAYER_MEMBER] > 0)
{
switch(gPlayerData[playerid][E_PLAYER_MEMBER])
{
case 1: // Prva organizacija, nazovimo je Los Santos Police Department
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); // Postavlja igracevu poziciju na te koordinate, vi te koordinate mozete zamijeniti svojima
SetPlayerFacingAngle(playerid, 270.1425); // Postavlja kamo da igrac gleda, vi to mozete zamijeniti sa svojim kutem
SetPlayerSkin(playerid, gPlayerData[playerid][E_PLAYER_ORG_SKIN]); // Postavlja igracev skin na onaj koji mora imat dok je u organizaciji
}
// Ovaj kod ispod kao da ne postoji, ali vam prikazuje kako dodati jos jednu organizaciju za spawn, sto je potrebno svaki put kada zelite dodati novu organizaciju
/*case 2: // Druga organizacije, nazovimo je FBI
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); // Postavlja igracevu poziciju na te koordinate, vi te koordinate mozete zamijeniti svojima
SetPlayerFacingAngle(playerid, 270.1425); // Postavlja kamo da igrac gleda, vi to mozete zamijeniti sa svojim kutem
SetPlayerSkin(playerid, gPlayerData[playerid][E_PLAYER_ORG_SKIN]); // Postavlja igracev skin na onaj koji mora imat dok je u organizaciji
}*/
}
}
else if (gPlayerData[playerid][E_PLAYER_LEADER] > 0)
{
switch(gPlayerData[playerid][E_PLAYER_LEADER])
{
case 1: // Prva organizacija, nazovimo je Los Santos Police Department
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); // Postavlja igracevu poziciju na te koordinate, vi te koordinate mozete zamijeniti svojima
SetPlayerFacingAngle(playerid, 270.1425); // Postavlja kamo da igrac gleda, vi to mozete zamijeniti sa svojim kutem
SetPlayerSkin(playerid, gPlayerData[playerid][E_PLAYER_ORG_SKIN]); // Postavlja igracev skin na onaj koji mora imat dok je u organizaciji
}
// Ovaj kod ispod kao da ne postoji, ali vam prikazuje kako dodati jos jednu organizaciju za spawn, sto je potrebno svaki put kada zelite dodati novu organizaciju
/*case 2: // Druga organizacije, nazovimo je FBI
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); // Postavlja igracevu poziciju na te koordinate, vi te koordinate mozete zamijeniti svojima
SetPlayerFacingAngle(playerid, 270.1425); // Postavlja kamo da igrac gleda, vi to mozete zamijeniti sa svojim kutem
SetPlayerSkin(playerid, gPlayerData[playerid][E_PLAYER_ORG_SKIN]); // Postavlja igracev skin na onaj koji mora imat dok je u organizaciji
}*/
}
}
return 1;
}
KOD ZA ONEMOGUCIVANJE VOZNJE VOZILA ORGANIZACIJE ONIMA KOJI NISU CLANOVI TE ORGANIZACIJE
- Svaki kod stavi gdje mu je mjesto kako je prikazano u kodu ispod.
- Kada dodajete novu organizaciju i zelite da vam drugi igraci osim clanova te organizacije ne mogu voziti vozila te organizacije, morate napraviti novu funkciju za provjeru da li je to vozilo dio te organizacije. I morate dodat jos jednu provjeru u OnPlayerStateChange callback te morate napraviti novu varijablu za tu organizaciju i dodijelit ID-eve vozila te organizacije toj varijabli (ako ovaj tekst niste skužili, pitajte te me u temi i probat ću vam bolje objasnit).
new
gPoliceCar[2]; // 2 je broj koliko ima policijskih vozila, ako zelite dodavat jos vozila LSPD organizaciji (ili nekoj novoj organizaciji), taj broj mora biti jednak broju vozila te org.
public OnGameModeInit()
{
gPoliceCar[0] = AddStaticVehicleEx(522, 1958.3783, 1343.1572, 15.3746, 270.1425, 1, 1, 60000); // Stvara vozilo LSPD-a i pamti njegov ID u varijabli gPoliceCar[0]
gPoliceCar[1] = AddStaticVehicleEx(522, 1958.3783, 1343.1572, 15.3746, 270.1425, 1, 1, 60000); // Stvara vozilo LSPD-a i pamti njegov ID u varijabli gPoliceCar[1]
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER) // Ako je usao u vozilo kao vozac
{
new
iVehicleID = GetPlayerVehicleID(playerid);
// Provjerava da li je igrac usao u vozilo org. LSPD i provjerava da li je clan te org., ako nije izbacit ce ga iz vozila
if (IsAPoliceCar(iVehicleID) && gPlayerData[playerid][E_PLAYER_MEMBER] != 1 && gPlayerData[playerid][E_PLAYER_LEADER] != 1)
{
SendClientMessage(playerid, C_WHITE, "ERROR: Nisi clan Los Santos Police Departmenta.");
RemovePlayerFromVehicle(playerid);
}
}
return 1;
}
stock IsAPoliceCar(iVehicleID)
{
for(new iIdx = 0; iIdx < sizeof(gPoliceCar); iIdx++)
{
if (gPoliceCar[iIdx] == iVehicleID)
return 1;
}
return 0;
}
SEFOVI
- Svaki kod stavi gdje mu je mjesto kako je prikazano u kodu ispod.
// Ovo ispod dodajte na pocetak skripte
// Ovo je dio koda u kojem definiramo gdje ce bit spremljeni podaci o organizaciji, tj. o kolicini materijala u sefu organizacije
enum E_ORG_DATA
{
E_ORG_MATS,
E_ORG_DROGS
};
new
gOrgData[MAX_ORGS][E_ORG_DATA];
CMD:sef(playerid, params[])
{
new
userOption[7],
userItems[6],
userAmount,
orgID;
if (gPlayerData[playerid][E_PLAYER_LEADER] > 0) // Ako je igrac lider organizacije
{
// Uzimamo ID organizacije, ali smanjujemo taj broj jer u PAWN-u array (niz) pocinje sa 0, a ne sa 1, a mi spremamo ID organizacije od 1
// Primjer: nekiNiz[0] = 0; - Pocetni element tog niza je sad 0
// nekiNiz[1] = 0; - Drugi element tog niza je sada 0, a ne prvi element niza
orgID = gPlayerData[playerid][E_PLAYER_LEADER] - 1;
if (sscanf(params, "s[7]{s[6]d}", userOption)) // Ako igrac nije upisao sve potrebne parametre, ispisuje mu poruku i opcije koje moze koristiti
{
SendClientMessage(playerid, C_WHITE, "OPCIJE: uzmi ostavi");
SendClientMessage(playerid, C_WHITE, "KORISTI: /sef [opcija] [mats/droga] [kolicina]");
return 1;
}
if (!strcmp(userOption, "uzmi", true)) // Ako je igrac odabrao opciju 'uzmi'
{
if (sscanf(params, "{s[7]}s[6]{d}", userItems))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef uzmi [mats/droga] [kolicina]");
if (!strcmp(userItems, "mats", true)) // Ako je igrac odabrao opciju 'mats'
{
if (sscanf(params, "{s[7]s[6]}d", userAmount))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef uzmi mats [kolicina]");
else if (gOrgData[orgID][E_ORG_MATS] < userAmount)
return SendClientMessage(playerid, C_WHITE, "ERROR: Nema toliko materijala u sefu");
gOrgData[orgID][E_ORG_MATS] -= userAmount; // Oduzmemo tu kolicinu materijala iz sefa
gPlayerData[playerid][E_PLAYER_MATS] += userAmount; // I dodamo tu kolicinu materijala igracu
SendClientMessage(playerid, C_WHITE, "Uspjesno si uzeo materijale");
}
else if (!strcmp(userItems, "droga", true)) // Ako je igrac odabrao opciju 'droga'
{
if (sscanf(params, "{s[7]s[6]}d", userAmount))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef uzmi droga [kolicina]");
else if (gOrgData[orgID][E_ORG_DROGS] < userAmount)
return SendClientMessage(playerid, C_WHITE, "ERROR: Nema toliko droge u sefu");
gOrgData[orgID][E_ORG_DROGS] -= userAmount; // Oduzmemo tu kolicinu droge iz sefa
gPlayerData[playerid][E_PLAYER_DROGS] += userAmount; // I dodamo tu kolicinu droge igracu
SendClientMessage(playerid, C_WHITE, "Uspjesno si uzeo drogu");
}
}
else if (!strcmp(userOption, "ostavi", true)) // Ako je igrac odabrao opciju 'ostavi'
{
if (sscanf(params, "{s[7]}s[6]{d}", userItems))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef ostavi [mats/droga] [kolicina]");
if (!strcmp(userItems, "mats", true)) // Ako je igrac odabrao opciju 'mats'
{
if (sscanf(params, "{s[7]s[6]}d", userAmount))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef ostavi mats [kolicina]");
else if (gPlayerData[playerid][E_PLAYER_MATS] < userAmount)
return SendClientMessage(playerid, C_WHITE, "ERROR: Nemas toliko materijala kod sebe");
gOrgData[orgID][E_ORG_MATS] += userAmount; // Dodamo tu kolicinu materijala u sefa
gPlayerData[playerid][E_PLAYER_MATS] -= userAmount; // I oduzmemo tu kolicinu materijala igracu
SendClientMessage(playerid, C_WHITE, "Uspjesno si ostavio materijale");
}
else if (!strcmp(userItems, "droga", true)) // Ako je igrac odabrao opciju 'droga'
{
if (sscanf(params, "{s[7]s[6]}d", userAmount))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef ostavi droga [kolicina]");
else if (gPlayerData[playerid][E_PLAYER_DROGS] < userAmount)
return SendClientMessage(playerid, C_WHITE, "ERROR: Nemas toliko droge kod sebe");
gOrgData[orgID][E_ORG_DROGS] += userAmount; // Dodamo tu kolicinu droge u sefa
gPlayerData[playerid][E_PLAYER_DROGS] -= userAmount; // I oduzmemo tu kolicinu droge igracu
SendClientMessage(playerid, C_WHITE, "Uspjesno si ostavio drogu");
}
}
}
else if (gPlayerData[playerid][E_PLAYER_MEMBER] > 0) // Ako je igrac clan organizacije
{
// Uzimamo ID organizacije, ali smanjujemo taj broj jer u PAWN-u array (niz) pocinje sa 0, a ne sa 1, a mi spremamo ID organizacije od 1
// Primjer: nekiNiz[0] = 0; - Pocetni element tog niza je sad 0
// nekiNiz[1] = 0; - Drugi element tog niza je sada 0, a ne prvi element niza
orgID = gPlayerData[playerid][E_PLAYER_MEMBER] - 1;
if (sscanf(params, "s[7]{s[6]d}", userOption)) // Ako igrac nije upisao sve potrebne parametre, ispisuje mu poruku i opcije koje moze koristiti
{
SendClientMessage(playerid, C_WHITE, "OPCIJE: ostavi");
SendClientMessage(playerid, C_WHITE, "KORISTI: /sef [opcija] [mats/droga] [kolicina]");
return 1;
}
if (!strcmp(userOption, "ostavi", true)) // Ako je igrac odabrao opciju 'ostavi'
{
if (sscanf(params, "{s[7]}s[6]{d}", userItems))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef ostavi [mats/droga] [kolicina]");
if (!strcmp(userItems, "mats", true)) // Ako je igrac odabrao opciju 'mats'
{
if (sscanf(params, "{s[7]s[6]}d", userAmount))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef ostavi mats [kolicina]");
else if (gPlayerData[playerid][E_PLAYER_MATS] < userAmount)
return SendClientMessage(playerid, C_WHITE, "ERROR: Nemas toliko materijala kod sebe");
gOrgData[orgID][E_ORG_MATS] += userAmount; // Dodamo tu kolicinu materijala u sefa
gPlayerData[playerid][E_PLAYER_MATS] -= userAmount; // I oduzmemo tu kolicinu materijala igracu
SendClientMessage(playerid, C_WHITE, "Uspjesno si ostavio materijale");
}
else if (!strcmp(userItems, "droga", true)) // Ako je igrac odabrao opciju 'droga'
{
if (sscanf(params, "{s[7]s[6]}d", userAmount))
return SendClientMessage(playerid, C_WHITE, "KORISTI: /sef ostavi droga [kolicina]");
else if (gPlayerData[playerid][E_PLAYER_DROGS] < userAmount)
return SendClientMessage(playerid, C_WHITE, "ERROR: Nemas toliko droge kod sebe");
gOrgData[orgID][E_ORG_DROGS] += userAmount; // Dodamo tu kolicinu droge u sefa
gPlayerData[playerid][E_PLAYER_DROGS] -= userAmount; // I oduzmemo tu kolicinu droge igracu
SendClientMessage(playerid, C_WHITE, "Uspjesno si ostavio drogu");
}
}
}
else return SendClientMessage(playerid, C_WHITE, "ERROR: Nisi niti lider organizacije niti clan");
return 1;
}
KRAJ
Ovo je kraj tutorial, ako nešto ne kužite, postajte u temi i odgovorit ću vam u najkraćem mogućem roku. Ili ako zelite nesto da bolje objasnim, mozete postati u temi ili poslati meni PP/PM.
Ako želite još nešto da dodem u tutorial, pošalji mi prijedlog preko PP/PM.
Dobar tut,lijepo objasnjeno.
Hvala. :)
Citat: Joey_ poslato Jul 28, 2012, 22:55:10 POSLE PODNE
Hvala. :)
Tut je odliÄan, ali izbacuje 4 errora:
IC war.pwn(185) : error 017: undefined symbol "gPlayerData"
IC war.pwn(185) : warning 215: expression has no effect
IC war.pwn(185) : error 001: expected token: ";", but found "]"
IC war.pwn(185) : error 029: invalid expression, assumed zero
IC war.pwn(185) : fatal error 107: too many error messages on one line
if (gPlayerData[playerid][E_PLAYER_MEMBER] > 0)
Citat: SpaMaster poslato Jul 28, 2012, 23:08:40 POSLE PODNE
Citat: Joey_ poslato Jul 28, 2012, 22:55:10 POSLE PODNE
Hvala. :)
Tut je odliÄan, ali izbacuje 4 errora:
IC war.pwn(185) : error 017: undefined symbol "gPlayerData"
IC war.pwn(185) : warning 215: expression has no effect
IC war.pwn(185) : error 001: expected token: ";", but found "]"
IC war.pwn(185) : error 029: invalid expression, assumed zero
IC war.pwn(185) : fatal error 107: too many error messages on one line
if (gPlayerData[playerid][E_PLAYER_MEMBER] > 0)
Mislim da ti fali
new
gPlayerData[MAX_PLAYERS][E_PLAYER_DATA];
Citat: [Egrotusi TDM] CadrRa poslato Jul 28, 2012, 23:12:20 POSLE PODNE
Citat: SpaMaster poslato Jul 28, 2012, 23:08:40 POSLE PODNE
Citat: Joey_ poslato Jul 28, 2012, 22:55:10 POSLE PODNE
Hvala. :)
Tut je odliÄan, ali izbacuje 4 errora:
IC war.pwn(185) : error 017: undefined symbol "gPlayerData"
IC war.pwn(185) : warning 215: expression has no effect
IC war.pwn(185) : error 001: expected token: ";", but found "]"
IC war.pwn(185) : error 029: invalid expression, assumed zero
IC war.pwn(185) : fatal error 107: too many error messages on one line
if (gPlayerData[playerid][E_PLAYER_MEMBER] > 0)
Mislim da ti fali
new
gPlayerData[MAX_PLAYERS][E_PLAYER_DATA];
15 nekakvih errora, GM od 0 :)
Citat: SpaMaster poslato Jul 28, 2012, 23:17:19 POSLE PODNE
15 nekakvih errora, GM od 0 :)
Onda nek ti joey pomogne,ne znam u cemu je problem
@SpaMaster, trebaš dodat na vrh svog moda ovaj kod (kao što je i navedeno u tutorialu):
enum E_PLAYER_DATA
{
E_PLAYER_LEADER, // Varijabla koja pamti cega je igrac lider
E_PLAYER_MEMBER, // Varijabla koja pamti u kojoj je igrac organizaciji
E_PLAYER_RANK, // Varijabla koja pamti koji je igrac rank u organizaciji
E_PLAYER_SKIN, // Varijabla koja pamti koji skin je igrac imao prije ulaska u organizaciju
E_PLAYER_ORG_SKIN // Varijabla koja pamti koji skin igrac ima dok je u organizaciji
}
new
gPlayerData[MAX_PLAYERS][E_PLAYER_DATA];
UPDATE: Dodana komanda (/r)adio i joÅ¡ jedan novi kod za onemogućivanje vožnje vozila onima koji nisu Älanovi te organizacije.
Citat: Joey_ poslato Jul 28, 2012, 23:26:20 POSLE PODNE
@SpaMaster, trebaš dodat na vrh svog moda ovaj kod (kao što je i navedeno u tutorialu):
enum E_PLAYER_DATA
{
E_PLAYER_LEADER, // Varijabla koja pamti cega je igrac lider
E_PLAYER_MEMBER, // Varijabla koja pamti u kojoj je igrac organizaciji
E_PLAYER_RANK, // Varijabla koja pamti koji je igrac rank u organizaciji
E_PLAYER_SKIN, // Varijabla koja pamti koji skin je igrac imao prije ulaska u organizaciju
E_PLAYER_ORG_SKIN // Varijabla koja pamti koji skin igrac ima dok je u organizaciji
}
new
gPlayerData[MAX_PLAYERS][E_PLAYER_DATA];
UPDATE: Dodana komanda (/r)adio i joÅ¡ jedan novi kod za onemogućivanje vožnje vozila onima koji nisu Älanovi te organizacije.
Neće, isto je.
Citat: SpaMaster poslato Jul 28, 2012, 23:27:41 POSLE PODNE
Neće, isto je.
Ja sam sam compileao taj kod, kod sebe i sve radi kako treba. Pošalji mi na PP/PM kod koji si napravio i riješit ćemo. ;)
Dobar tut ;)
Hvala. :)
bravo paradox :)
napravi i koju fs :D
moze i jos koji tut ;D
Dobar tut , hvala ! :)
Hvala svima. :)
@El Niñoâ,,¢, predloži neÅ¡to i ja iskriptam. ;D Ili napiÅ¡em tutorial. :D
UPDATE: Dodana funkcija GetPlayerRank() i updateana komanda (/r)adio.
Citat: ...Р৸illipS... poslato Jul 29, 2012, 00:27:29 PRE PODNE
Odlicna stvar ljubavi moja :-* :-*.Odusevljen sam sa tvojim umecem
Hvala. :-* Hvala što si oduševljen mojim umijećem, ali ovo nije 50% što mogu. ;D
BTW, sutra dolazi još jedan update tutoriala sa nekim stvarima, ako imate neki prijedlog, pošaljite mi na PP/PM. :)
Odlican tut, pomoci ce mnogima :)
Odlican, imaš PM od mene. :)
Citat: Joey_ poslato Jul 29, 2012, 00:14:22 PRE PODNE
Hvala svima. :)
@El Niñoâ,,¢, predloži neÅ¡to i ja iskriptam. ;D Ili napiÅ¡em tutorial. :D
UPDATE: Dodana funkcija GetPlayerRank() i updateana komanda (/r)adio.
Tut pravljenja CoSa od 0 ? :)
Da je bolje nebi valjalo ;)
Hvala Mario.
Dobar tutorial. Pomoc ce meni i ostalim pocetnicima .. :P
Hvala svima. :)
Citat: Daniel Zero poslato Jul 29, 2012, 11:11:13 PRE PODNE
Tut pravljenja CoSa od 0 ? :)
Mogao bih. :D
UPDATE: Updateana je IsAPoliceCar funkcija.
OdliÄan tutorial Mario, sve lijepo objaÅ¡njeno, svaka Äast. :D
Hvala, Hitmane. :D
Hvala. :)
UPDATE: Ispravljena mala greÅ¡ka kod koda za onemogućivanje vožnje vozila drugim igraÄima. Hvala RICK3Nu na ispravci. :)
Lep tut 10/10 :)
Lep TUT posluzice nekada :D bookmark sam ti naslov. Ocena 10/10
2 puta komentiraš jednu te istu temu? ??? Spamer alert.
Gamemode.pwn(187) : error 028: invalid subscript (not an array or too many subscripts): "pInfo"
Gamemode.pwn(187) : warning 215: expression has no effect
Gamemode.pwn(187) : error 001: expected token: ";", but found "]"
Gamemode.pwn(187) : error 029: invalid expression, assumed zero
Gamemode.pwn(187) : fatal error 107: too many error messages on one line
na :
if (pInfo[playerid][Clan] > 0)
kako cu ovo rijesit ? xd
Odlicno .. :)
Hvala. :)
@dReaMMM', jesi sve zamijenio sa nazivom pInfo i da li imaš definiranu tu varijablu?
Izbaci mi ove errore
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(313) : error 014: invalid statement; not in switch
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(313) : error 029: invalid expression, assumed zero
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(339) : error 010: invalid function or declaration
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(621) : warning 203: symbol is never used: "invite"
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(621) : warning 203: symbol is never used: "izbaci"
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(621) : warning 203: symbol is never used: "makeleader"
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(621) : warning 203: symbol is never used: "r"
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(621) : warning 203: symbol is never used: "radio"
C:\Documents and Settings\HS56\Desktop\TechLand Xperia\gamemodes\123.pwn(621) : warning 203: symbol is never used: "rankup"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
Nemaš ZCMD include. Download tog includea možeš naći u tutorialu. ;)
Dobar tut :) 10/0
C:\Users\Kristijan\Desktop\Server Novi Mod\gamemodes\QuerZex.pwn(455) : error 017: undefined symbol "foreach"
C:\Users\Kristijan\Desktop\Server Novi Mod\gamemodes\QuerZex.pwn(455) : error 029: invalid expression, assumed zero
C:\Users\Kristijan\Desktop\Server Novi Mod\gamemodes\QuerZex.pwn(455) : error 017: undefined symbol "iPlayerID"
C:\Users\Kristijan\Desktop\Server Novi Mod\gamemodes\QuerZex.pwn(455) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Evo linije: foreach(new iPlayerID : Player)
A evo cijele CMD: CMD:r(playerid, params[])
{
if (PlayerInfo[playerid][pMember] > 0 || PlayerInfo[playerid][pLeader] > 0)
{
new
szChatMsg[128],
szPlayerName[MAX_PLAYER_NAME],
szMessage[128];
if (sscanf(params, "s[128]", szChatMsg)) // Ako igrac nije upisao sve potrebne parametre, ispisuje mu tu poruku
return SendClientMessage(playerid, C_WHITE, "KORISTI: (/r)adio [tekst]");
GetPlayerName(playerid, szPlayerName, MAX_PLAYER_NAME);
foreach(new iPlayerID : Player)
{
// Prolazi kroz sve online igrace i provjerava da li su u istoj organizaciji kao i posiljatelj poruke
if (PlayerInfo[iPlayerID][pMember] == PlayerInfo[playerid][pMember] || PlayerInfo[iPlayerID][pLeader] == PlayerInfo[playerid][pLeader])
{
format(szMessage, sizeof(szMessage), "%s %s kaze: %s", GetPlayerRank(playerid), szPlayerName, szChatMsg);
SendClientMessage(iPlayerID, C_WHITE, szMessage);
}
}
}
else
SendClientMessage(playerid, C_WHITE, "ERROR: Moras biti clan neke organizacije da koristis ovu komandu.");
return 1;
}
Dobio sam ove errore kako to rjesiti ?
Imam, stavljen je i to mi izbacuje i ja sam se cudio :S
Imaš li najnoviji foreach?
aj napravi ako mozes da se offline moze izbacit, i komandu da se moze maknit lider
Jako dobro...
Ako imas problem nemoras onda DP radit. -.-
Supet tut. 10/10 :D
Odlican TuT,pohvala za trud
mm.. ukusan tut :D
Dobar tut 8)
(http://upload.slike.com/thumbs/157fE.png)
@kristijan250, to ti sam moraÅ¡ napraviti. A to napraviÅ¡ tako da u /rankup funkciji dodaÅ¡ provjeru da provjeriÅ¡ u kojoj je organizaciji igraÄ i onda samo provjeriÅ¡ koji rank mu je dodijeljen i daÅ¡ mu skin za taj rank.
@[D-V] Shoorty, ne kužim? Šta neuredno?
BTW, mislim napravit update tutoriala, tako da ako imate kakav prijedlog, slobodnog mi ga predložite preko PM/PP-a.
Dobar tutorijal, lijepo objasnjeno, hvala. To mi treba :P Znam ja al sad cu jos bolje znat :P
Dobar tut :)
Lijep TuT
Hvala svima. :)
UPDATE: Dodata funkcija kod /rankup komande za automatsko postavljanje skina za odreÄ'eni rank.
Citat: Joey_ poslato Januar 30, 2013, 20:58:03 POSLE PODNE
Hvala svima. :)
UPDATE: Dodata funkcija kod /rankup komande za automatsko postavljanje skina za odreÄ'eni rank.
To care :D Koristim ovaj tut ;)
Lepo, pomoci ce :)
Ovo je jedan on bolji Tutoriala na ovom forumu, sve Äestitke :)
Hvala svima. :) Ponavljam, ako imate kakav prijedlog u vezi tutoriala, pošaljite meni na PM.
Svaka cast za tutorial, ja sam ti poslao jedan predlog
Prijedlog: Napravi CoS posto nikakav tut na cijelom BS nema za to a i pomoći ce mnogima
Btw prejak tut sutra ga probam
Citat: [BFRP]Champa poslato Februar 04, 2013, 19:35:23 POSLE PODNE
Prijedlog: Napravi CoS posto nikakav tut na cijelom BS nema za to a i pomoći ce mnogima
Btw prejak tut sutra ga probam
Jel ti citas sta on pise?
Imas opomenu za spam, sledeci put zabrana
Citat: ♫ SteXi.ılllı. poslato Februar 04, 2013, 20:35:08 POSLE PODNE
Citat: [BFRP]Champa poslato Februar 04, 2013, 19:35:23 POSLE PODNE
Prijedlog: Napravi CoS posto nikakav tut na cijelom BS nema za to a i pomoći ce mnogima
Btw prejak tut sutra ga probam
Jel ti citas sta on pise?
Imas opomenu za spam, sledeci put zabrana
Lol. Možda ga je krivo razumio? Mislio je možda da Joey_ hoće prijedlog u vezi tutoriala kojeg da napravi, a ne šta da doda u ovaj tutorial. ;)
Citat: [SX] TiXoR_ poslato Februar 06, 2013, 11:37:37 PRE PODNE
Citat: ♫ SteXi.ılllı. poslato Februar 04, 2013, 20:35:08 POSLE PODNE
Citat: [BFRP]Champa poslato Februar 04, 2013, 19:35:23 POSLE PODNE
Prijedlog: Napravi CoS posto nikakav tut na cijelom BS nema za to a i pomoći ce mnogima
Btw prejak tut sutra ga probam
Jel ti citas sta on pise?
Imas opomenu za spam, sledeci put zabrana
Lol. Možda ga je krivo razumio? Mislio je možda da Joey_ hoće prijedlog u vezi tutoriala kojeg da napravi, a ne šta da doda u ovaj tutorial. ;)
Mislio je na ovaj tut:D
moj ti je prjedlogg da napravis komandu /r i /f ---> /f za bande mafije /r za policajce
Citat: N1XTON poslato Februar 06, 2013, 18:27:38 POSLE PODNE
moj ti je prjedlogg da napravis komandu /r i /f ---> /f za bande mafije /r za policajce
Ima već /r chat. ;) A sad tko ga hoće prilagodit, neka izvoli.
Å to se tiÄe updatea, ne stignem kroz tjedan, tako da ću ga napravit za vikend.
OdliÄan tut :D
Svaka cast za TuT
Svaka Äast.
OdliÄan tutorijal i sve lijepo objaÅ¡njeno.
odlcian TUT svaka cast, samo tako nastavi brt
Hvala svima. :)
UPDATE: Dodat je dio za sefove i malo je redizajniran tutorial.
Ako imate kakvih prijedlog za jos kakav tutorial ili za nadopunu ovoga, posaljite meni preko PP-a/PM-a.
Citat: |LG|Yui_Sang poslato Jun 15, 2013, 15:48:59 POSLE PODNE
Nije pisano vise od 10 dana al moram odgovorit Lep je tut lep je i update al ako stignes dopravi i saving i ucitanje ovih sefova kolko vidim nema :D
Hvala. :) Kad uhvatim vremena, vjerojatno ću i to dodat. :D
Bravo...ali ima malih greskica unutar itd..ali sve u svemu 10/10
Kakvih greškica? Ako postoje da ih popravim. :)
Dobar tut,lijepo objasnjeno
OdluÄan TuT brate, iako sam poÄetnik radim ovo k'o lud :D Hvala <3
Kada sve to uradim nista mi ne izbacuje
A šta bi ti trebalo izbacit? ::)
Dosta dobar tut hvala ti ovo mi je trebalo ;)
Dobar Tut
10/10
Svida mi se sta si sve sveo na jednostavnost kako bi pocetnici razumjeli :D
http://pastebin.com/F38qfRD2 warnovi u cem je prob?
Jel ti fino piše kad hoćeš da odgovoriš da je tema starija od 10 dana ???
I zao to imas Pomoc u vezi sam skriptanja!