Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4957 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

(redaguota)

Sveiki šiandien "čharinausi" po visus supportus ieškodamas kažko įdomau pasinagrinėjimui , ir radau ispėjimų sistemą kurią sukūręs žmogus nelabai atsakinėjo į errorus , tai ištaisiau ir štai ta pamoka.Pamoka ne mano ji "Lauris..."

Kas tai?

Tai sistema, kurios dėka direktoriai galės dėti įspėjimus darbuotojams.

Kuom tai naudinga?

Direktoriams bus lengviau, jiems nereiks žymėtis įspėjimų, tiesiog galės uždėti įspejimus žaidime.

1. Susikuriame kintamuosius.

Einame į ***\gamemodes\data\playerDB.txt.

Susirandame kintamuosius.

Pvz.:

lytis,
drabuziai,
uniforma,
skambutis,

Ir prie jų įterpiame naują kintamajį - ispejimai,

Turėjo gautis kažkas panašaus į tai:

lytis,
drabuziai,
uniforma,
ispejimai,
skambutis,

2. Sukuriame komandą.

Einame į savo gamemodą.

Susirandame callback'ą

public OnPlayerCommandText(playerid, cmdtext[])

{ ir įterpiame šias komandas prie direktorių komandų

if(!strcmp(cmdtext, "/ispeti",true,7))
{
if(!cmdtext[7])
{
	SendClientMessage(playerid,0xFFFFFFFF,"Uždėti vieną įspejimą firmos darbuotojui: /ispeti [Vardas_Pavarde]");
	return 1;
}
new name[24],vardas[24];
strmid(name,cmdtext[8],0,sizeof(name));
new id = GetPlayeridMid(name);
if(playerDB[id][plead]>0 && id != playerid) return SendClientMessage(playerid,0xFFFFFFFF,"Nurodytas žaidėjas yra kitos firmos direktorius.");
if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid,0xFFFFFFFF,"Žaidėjo su tokiu vardu nėra.");
new darbas = GetJobFromFaction(playerDB[playerid][plead]);
if(playerDB[id][specialybe]!= darbas) return SendClientMessage(playerid,0xFFFFFFFF,"Nurodytas asmuo nedirba pas jus.");
GetPlayerName(id,name,sizeof(name));
GetPlayerName(playerid,vardas,sizeof(vardas));
playerDB[id][ispejimai]++;
new ispejim = playerDB[id][ispejimai];
new msg[120];
format(msg,117,"Darbuotojui %s uždėjote vieną įspejimą. Šis darbuotojas jau turi %i ispejimą (-us).",name,ispejim);
SendClientMessage(playerid,0xFFFFFFFF,msg);
format(msg,112,"Direktorius %s jums uždejo vieną ispejimą. Dabar jūs turite %i įspejimą (-us).",vardas,ispejim);
SendClientMessage(id,0xFFFFFFFF,msg);
if(playerDB[id][ispejimai]==3)
{
	if(playerDB[id][uniformd])SetPlayerSkin(id,playerDB[id][drabuziai]);
	playerDB[id][specialybe]=0;
	playerDB[id][uniformd]=false;
	playerDB[id][uniforma]=-1;
	playerDB[id][ispejimai]=0;
	SendClientMessage(id,WHITE,"Jūs gavote 3-ią įspėjimą, todėl jūs pašalinamas iš darbo.");
	format(msg,67,"%s gavo jau 3-ą įspėjimą. Jis jau bedarbis.",name);
	SendClientMessage(playerid,0xFFFFFFFF,msg);
}
return 1;
}

Funkcijų paaiškinimas:

SendClientMessage - nusiunčia žaidėjui žinutę.

GetPlayerName - išgauna žaidėjo vardą.

playerDB[id][ispejimai]++; - prideda žaidėjui vieną ispėjimą.

playerDB[id][specialybe]=0; - nustato žaidėjo specialybę į 0.

playerDB[id][uniformd]=false; - nustato žaidėjo uniformos kintamąjį į neturimą.

playerDB[id][uniforma]=-1; - nustato žaidėjo uniformą į neturimą.

playerDB[id][ispejimai]=0; - nustato žaidėjo įspėjimus į 0.

3. Įspėjimų išsaugojimai,užkrovimai.

SVARBU! Saugojimas parodytas su dini.

Susirandame callback'ą

public SavePlayerData(playerid,bool:simple)

{

Ir ten, prie visų saugojimų

dini_IntSet(file,"Biznis",playerDB[playerid][biznis]);
dini_IntSet(file,"Wanted",GetPlayerWantedLevel(playerid));
dini_IntSet(file,"License",playerDB[playerid][teises]);

Įterpiame

dini_IntSet(file,"Ispejimai",playerDB[playerid][ispejimai]);

Turėjome gauti kažką panašaus :

dini_IntSet(file,"Biznis",playerDB[playerid][biznis]);
dini_IntSet(file,"Wanted",GetPlayerWantedLevel(playerid));
dini_IntSet(file,"License",playerDB[playerid][teises]);
dini_IntSet(file,"Ispejimai",playerDB[playerid][ispejimai]);

Susirandame callback'ą

public LoadPlayerData(playerid)

{

Ir ten, prie visų užkrovimų

playerDB[playerid][kalejimo_laikas] = dini_Int(file,"Kalejime");
playerDB[playerid][specialybe] = dini_Int(file,"Job");
playerDB[playerid][biznis] = dini_Int(file,"Biznis");

Įterpiame

playerDB[playerid][ispejimai] = dini_Int(file,"Ispejimai");

Turėjome gauti kažką panašaus :

playerDB[playerid][kalejimo_laikas] = dini_Int(file,"Kalejime");
playerDB[playerid][specialybe] = dini_Int(file,"Job");
playerDB[playerid][biznis] = dini_Int(file,"Biznis");
playerDB[playerid][ispejimai] = dini_Int(file,"Ispejimai");

Susirandame callback'ą

[color=blue][b]public Clear(playerid)
{[/b][/color]

Ir ten, prie visų švarinimų

playerDB[playerid][teises]=false;
playerDB[playerid][banke]=0;
playerDB[playerid][biznis]=0;

Įterpiame

playerDB[playerid][ispejimai]=0;

Turėjome gauti kažką panašaus :

playerDB[playerid][teises]=false;
playerDB[playerid][banke]=0;
playerDB[playerid][biznis]=0;
playerDB[playerid][ispejimai]=0;


SVARBU! Nepamirškite prie visų išėjimų iš darbo, komandų /paliktidarba ir pnš., ir t.t. pridėti funkciją

playerDB[playerid][ispejimai]=0;

Ši funkcija nuima visus įspejimus. Tai reikalinga tam, jog darbuotojas atėjęs į kitą darbą, neturėtų įspėjimų.

Ką aš pakeičiau/padariau , mačiau buvo errorų , kad rašė virš 600~+ ispėjimų tai pažaidęs su new padariau , kad rodytu normaliai, dar metė errorą:

C:\Documents and Settings\xp\Desktop\GRP4 Final Original By Kanis_Burrito\gamemodes\GRP4.pwn(1743) : warning 219: local variable "ispejimai" shadows a variable at a preceding level
C:\Documents and Settings\xp\Desktop\GRP4 Final Original By Kanis_Burrito\gamemodes\GRP4.pwn(1743) : warning 204: symbol is assigned a value that is never used: "ispejimai"

tai tesiog jis buvo padaręs klaidą prie new, ištaisiau , na nieko įpatingo ,bet jei kam reikės tai pasinaudokit, DAR KARTA SAKAU PAMOKA NE MANO, o kieno? paskaityk viršui.

Redaguota , nario SCmindė
  • Teigiamai 6

804ed16076b41d9cecff40801dac3c6c47.gif

C:\Documents and Settings\xp\Desktop\GRP4 Final Original By Kanis_Burrito\gamemodes\GRP4.pwn(1743) : warning 219: local variable "ispejimai" shadows a variable at a preceding level // Sitas error rodo kad ispejimai kintamasis jau yra naudojamas

C:\Documents and Settings\xp\Desktop\GRP4 Final Original By Kanis_Burrito\gamemodes\GRP4.pwn(1743) : warning 204: symbol is assigned a value that is never used: "ispejimai" // Sis error rodo kad ispejimai kintamasis niekur nera naudojamas

TTai kaip suprast? :D

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4957 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...