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

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5283 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

Sveiki visi,

Nutariau naujus skripterius pamokinti naudotis exTimer'iais - pilnoji funkcija - SetTimerEx.

Kas tai yra?

SetTimerEx naudojamas padaryti kažkokią funkciją už tam tikro laiko. Na pavizdžiui pasinaudojote komanda /info ir SetTimerEx padaro, jog jūsų žaidėjo informacija atsirastų po 5sek. naudojant funkcija:

SetTimerEx("Info",5000,0,"i",playerid);

Kaip sukūrti, nustatyti ir naudoti exTimer'ius? Pavizdys

Gerai, jog būtų geriau suprantama, padarysiu komandą, kuri užšaldys žaidėją, kuris pasinaudos komanda /uzsalti ir po 10sek. jis vėl bus atšalęs automatiškai.

Jūsų gamemode faile susirandame eilutę pavadintą:

public OnPlayerCommandText(playerid, cmdtext[])

Suradome visas savo komandas. Sukūriame naują, savo komandą:

if(strcmp(cmdtext, "/uzsalti", true,9)==0)
{
TogglePlayerControllable(playerid,false); // Zaidejas uzsala
SetTimerEx("Uzsala",10000,0,"i",playerid); // Nustatome exTimer'i 10sek.
return 1;
}

Dabar reikia sukūrti mūsų exTimer'io "Uzsala" funkciją, kuri įvyks po 10-ies sek.

Šias eilutes galite kūrti prieš eilutę OnPlayerCommandText:

forward Uzsala(playerid);
public Uzsala(playerid)
{
TogglePlayerControllable(playerid,true); // Zaidejas atsala
return 1;
}

Galite naudoti kitus laiko tarpus. Laiko tarpai skaičiuojami milisekundėmis, todėl skaičiai gaunasi tokie dideli, jei norite gauti jums reikiamą laikotarpį.

Pavizdžiai:

1000 - 1sek.

5000 - 5sek.

10000 - 10sek.

30000 - 30sek.

60000 - 1min.

600000 - 10min.

3600000 - 1val.

Taip pat galite dauginti skaičius, jog būtų paprasčiau

Pvž. išgauti 20min.:

60000*20 - ir tai duotų 20 min, kadangi 60000 viena minutė.

Laiką reguliuojate

SetTimerEx("Uzsala",10000,0,"i",playerid);

Pažymėtoje vietoje.

Perkrovimas, resursų išnaudojimas

Nepatariama kūrti daug timer'ių, kadangi jie sukelia nemažą lag'ą žaidėjams, jei žaidėjų daug ir kiekvienas timer'is turi atlikti darbą kiekvienam žaidėjui, logiškai mąstant, serveris atlieka perdaug procesų, jei tos komandos yra dažnai naudojamos. Taip pat, ko daugiau žaidėjų atliekami timer'ių procesai vienu metu, to didesnis resursų ėmimas. Jei jūsų hostingas nėra stiprus arba pas jūs žaidžia labai dideliais kiekiais žaidėjų, serveris gali lūžti.

Patarimas: naudokite timer'ius TIK labai svarbiuose dalykuose.

Štai ir viskas. Žaidėjas, kuris suvedė komandą /uzsalti, užšalo ir po 10sek. atšalo. Manau supratote, kas yra exTimer'is. Jei vis dar neaišku, prašau parašyti šioje temoje, pamėginsiu išaiškinti aiškiau.

Sėkmės,

Ratio.

Tiek dirbu,o REP negaunu :( Jei negaila +REP :)

OFF-TOPIC much? Gera pamokėlė,kartais ne freeroam lt naudoja šita kai /car parašai? Nes ten rašo teleport už 5 sekundžių...?

Taip, Create. Galima naudoti ir teleportams. Timer'ius galima pritaikyti visoms funkcijoms esančioms sa-mp'e. Bent jau kodas nekopijuotas, padariau patį paprasčiausia, kas šovė į galvą.

Tiek dirbu,o REP negaunu :( Jei negaila +REP :)

Ponas Ratio būtu visai nebligai jai naujokus pamokintumėte ir kaip nusistatyti didesni laiką ne vien 10 s . Pamoka pusia velnio..

A ir kiek maždaug išnaudoja (mm kaip čia pasakius) vienas timeris serverio resursų ? Maždaug (Sakykim, jai jis būtų ant kiekvienos komandos ar Iėjimo..)

Šį bei tą užsiminiau, pakoregavau savo temos pranešimą.

Dėkui.

Tiek dirbu,o REP negaunu :( Jei negaila +REP :)

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5283 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ą...