[TuT] Pravljenje organizacija/bandi

Započeo Aleksandar?, Januar 06, 2011, 15:48:10 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Gledam malo po forumu i sve neki tutovi za GF i njegove edite,pa rek'o da napravim jedan TUT da nije za GF i sl..

Neki si postavljaju pitanja kako napraviti organizaciju/mafiju za mod od 0.

Evo jedan veoma jednostavan tutorial o tome.
Pa da pocnemo:

Pri vrhu vase scripte ispod #include "a_samp"

potrebno je da dodate sledece includse koje mozete naci na ovom forumu ili na samo forumu:

#include "Zcmd"
#include "sscanf2"
#include "dini"
#include "foreach"


Umjesto #include <Ime> mozete koristiti  #include "Ime"(kao sto sam ja),potpuno je isto!

Sledeci korak je pravljenje komande kako dati nekome lidera!

Koristicemo Zcmd.

CMD:makelider(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Plava,"Niste ovlasteni!");
new ID,level;
if(sscanf(params, "dd", ID, level)) return SendClientMessage(playerid, Plava, "Koristenje: /makelider [ID] [broj org]");
new file[128];
format(file,sizeof(file),"GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(ID));
dini_IntSet(file,"Lider",level);
SetPVarInt(ID,"Lider",level);
return true;
}


Da pojasnimo malo.

if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Plava,"Niste ovlasteni!"); --ako igrac nije rcon ulogovan admin da mu ispisuje poruku.

if(sscanf(params, "dd", ID, level)) return SendClientMessage(playerid, Plava, "Koristenje: /makelider [ID] [broj org]"); -- ako ukucate /makelider,bez ID-a,ili bez broja org ispisace vam tu poruku(naravno ukoliko ste se rcon ulogovali)

format(file,sizeof(file),"GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(ID));  -- ovde umjesto "GdjeVamSeSpremaAcc/%s.ini" unesite gdje se vama sprema acc,npr
"KorisnickiRacuni/%s.ini"


Kada ste nekome dali lidera,naravno da necete svakome ko hoce u tu orgaizaciju/mafiju davati lidera.
E pa onda idemo napraviti komandu da lider moze ozvati u organizaciju kog' hoce..


CMD:pozovi(playerid, params[])
{
if(GetPVarInt(playerid,"Lider") < 1) return SendClientMessage(playerid,Plava,"Niste ovlasteni!");
new ID,level;
if(sscanf(params, "dd", ID, level)) return SendClientMessage(playerid, Plava, "Koristenje: /pozovi [ID] [broj org]");
if(level != GetPVarInt(playerid,"Lider")) return SendClientMessage(playerid,Plava,"Ne mozete pozvati igraca u drugu org/mafiju.");
new file[128];
format(file,sizeof(file),"GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(ID));
dini_IntSet(file,"Clan",level);
SetPVarInt(ID,"Clan",level);
return true;
}


Objasnjenje pogledaj gore!

Pozvali ste nekog' u organizaciju/mafiju? Zelite ga izbaciti? Idemo napraviti komadnu!

CMD:izbaci(playerid, params[])
{
if(GetPVarInt(playerid,"Lider") >= 1)
{
new ID;
if(sscanf(params, "d", ID)) return SendClientMessage(playerid, Plava, "Koristenje: /izbaci [ID] ");
if(GetPVarInt(ID,"Clan") != GetPVarInt(playerid,"Lider")) return SendClientMessage(playerid,Plava,"Ne mozete izbaciti igraca iz druge org/mafije.");
new file[128];
format(file,sizeof(file),"GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(ID));
dini_IntSet(file,"Clan",0);
SetPVarInt(ID,"Clan",0);
}
return true;
}

Takodje,objasnjenja za pojedine linije pogledajte gore!

Zelite napraviti chat za organizaciju/mafiju?
Nista lakse!

CMD:chat(playerid,params[])
{
new tekst [MAX_STRING];
if (sscanf(params, "s[90]", tekst)) SendClientMessage(playerid,Plava,  "Koristenje: /chat [text]");
else{
if( GetPVarInt(playerid,"Lider") == 1) {
new string[89]; format(string, sizeof(string), " Lider OrgJedan %s kaze: %s", ImeIgraca(playerid), params[0] );
return PorukaOrgJedan(Plava,string);
}
else
{
if( GetPVarInt(playerid,"Clan") == 1 ) {
new string[89]; format(string, sizeof(string), " Clan OrgJedan %s kaze: %s", ImeIgraca(playerid), params[0] );
return PorukaOrgJedan(Plava,string);
}
else  return SendClientMessage(playerid,Plava,"Niste clan OrgJedan!");
}
}
return true;
}

Pitate se sta je PorukaOrgJedan(Plava,string);

Potrebno je da napravimo kako ce slati poruku.

forward PorukaOrgJedan(Boja, const string[]);
public PorukaOrgJedan(Boja, const string[])
{
foreach(Player, i)
{
if (GetPVarInt(i,"Lider") == 1 || GetPVarInt(i,"Clan") == 1) SendClientMessage(i, Boja, string);
}
return true;
}


Samim pogledom u ovaj public sve bi vam trebalo biti jasno..


Pitate se kako napraviti vozila da samo jedna mafija/organizacija moze voziti?

Prvo pri vrhu vase scrite,gdje vam se nalaze ostali "new" dodajte new orgauto[4];

Zatim,ispod OnGameModeInit potrebno je stvoriti vozila za organizacije/mafije.

To bi izgledalo ovako:

orgauto[1]=AddStaticVehicleEx(487,121,21312,2131,112,17,17,30); --- pogledajte wikipediu za AddStaticVehicleEx
orgauto[2]=AddStaticVehicleEx(487,121,21312,2131,112,17,17,30); --- pogledajte wikipediu za AddStaticVehicleEx
orgauto[3]=AddStaticVehicleEx(487,121,21312,2131,112,17,17,30); --- pogledajte wikipediu za AddStaticVehicleEx

Zatim kako bi se lakse snalazili u scripti i da nam bude preglednije napravimo

stock OrgJedan(vozilo)
{
if(vozilo == orgauto[1] || vozilo == orgauto[2] || vozilo == orgauto[3] )
{
return 1;
}
return 0;
}


Ukoliko zelite dodavati jos vozila kod lilije  new orgauto[4]; ,broj [4] povecavate za jedan,znaci ako imate 6 vozila stavite broj 7,ali je potrebno da i kod stock OrgJedan(vozilo) dodate jos vozila..

Sada smo napravili vozila za mafije,ali zelimo da odbijemo ulaz igracima koji nisu clanovi te organizacije/mafije.

Ispod OnPlayerStateChange dodajte

new voziloID = GetPlayerVehicleID(playerid);
if(newstate == 2)
{
if(OrgJedan(voziloID))
{
if(GetPVarInt(playerid,"Lider") == 1 || GetPVarInt(playerid,"Clan") == 1)
{
return true;
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,Plava,"Niste clan OrgJedan!");
}
}
}

Takodje vam je potrebno da dodate sledeci stock jer bi vam izbacivalo error

stock ImeIgraca(playerid)
{
new ime[MAX_PLAYER_NAME];
GetPlayerName(playerid, ime, sizeof(ime));
return ime;
}


Ukoliko zelite napraviti da se igrac spawna u svojoj bazi ispod OnPlayerSpawn dodajte:

if(GetPVarInt(playerid,"Lider") == 1 || GetPVarInt(playerid,"Clan") )
{
SetPlayerPos(playerid, 123.2133,12312.2131,1231);
SetPlayerInterior(playerid, 0);
}


Potrebno je da definisete boju,ja sam koristio plavu pa ispod vasih ostalih #define-a dodajte #define Plava 0x375FFFFF

I zadnje sto trebate je da ispod OnPlayerConnect-a dodate

new file[128];
format(file, sizeof(file), "GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(playerid));
SetPVarInt(playerid, "Lider", dini_Int(file, "Lider"));
SetPVarInt(playerid, "Clan", dini_Int(file, "Clan"));


Kao sto vidite koristio sam Zcmd,sscanf,dini,foreach itd,tako da bih se zahvalio onim akoji su to sve napravili!

Napomena: Gdje nisam pisao npr. "ovo stavite ispod OnPlayerSpawn" znaci da to stavljate izvan ostalih publica i sl..

NE GARANTUJEM da ce ovaj TUT 100% raditi,jer ja nisam isprobavao to.
Ako nekome nesta nije jasno neka pita,jer ja nisam objasnjavao sve u detalje!

Poslednja Izmena: April 17, 2012, 14:51:53 POSLE PODNE od joXy_


Valjda ovi nece da obrisu ovo,bilo je ovakvih tutoriala ali sve obrisu...dobar tut



black_dota

bravo aleksandre

sve me vise iznenadjujes

cestitam ti

izvinjavam se na refreshu ali sta da radim sa ovim error-om treba definisati ali gdje i kako

C:\Documents and Settings\AND1\Desktop\CroHerzegovina.org\gamemodes\croherze-stunt.pwn(1416) : error 017: undefined symbol "ImeIgraca"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

nisi ubacio ovaj stock:

stock ImeIgraca(playerid)
{
new ime[MAX_PLAYER_NAME];
GetPlayerName(playerid, ime, sizeof(ime));
return ime;
}



Upozorenje - dok ste pisali poruku netko je poslao novi odgovor. Možda trebate revidirati svoju poruku.

jel bi mogao neko napravit ovakvo isto al samo za vozila, mislim  ne za org nego da samo jedan ili nekoliko igraca moze voziti a da nisu zajedno u org inace ovo je super, pomoglo mi :) tnx




Ovaj tut si ukrao bio je objavljen prije mozda pola godine ja sam ga kopirao i isti je kao ovaj bas do rijeci


Ne razumem zasto mi izbacuje errore :(

D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(6698) : error 017: undefined symbol "OrgJedan"
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(6702) : error 079: inconsistent return types (array & non-array)
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(6711) : error 029: invalid expression, assumed zero
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(6715) : error 090: public functions may not return arrays (symbol "OnPlayerStateChange")
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(6717) : warning 225: unreachable code
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(7220) : error 079: inconsistent return types (array & non-array)
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(9685) : error 029: invalid expression, assumed zero
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(9685) : error 017: undefined symbol "OrgJedan"
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(9687) : error 017: undefined symbol "vozilo"
D:\Documents and Settings\Zoran\Desktop\Copy of samp\gamemodes\south-europe.pwn(9694) : warning 225: unreachable code
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


8 Errors.