Mine sisusse
Otsi siit
  • Rohkem valikuid...
Otsi tulemusi mis sisaldab...
Otsi tulemusi...

Soovitatud postitused

1) On sul vaja vastavat programmi, millega hakata üldse SA-MP mängumoodi looma.

http://sa-mp.com/download.php

2) Installi endale sobivasse kohta Sa-Mp server ära ning nüüd ongi sul PAWNO arvutisse valmis tõmmatud.

3) Ava see kaust, kuhu sa Sa-Mp serveri tõmbasid ning sealt vali Pawno ja sul on seal 3 malenupukese taolist programmi, üks on pawn teine pawncc ja kolmas heledam malenupp Pawno. Ava see viimane ning seejärel peaks sul avanema ette aken nagu alloleval pildil.

Pilt.jpg

NB! Osad peavad avama selle administraatorina " Run as Administrator " et kasutada kõiki funktsioone mida PAWNO pakub.

4) Nüüd muuda ära järgnev koodis rida : " Blank gamemode by your name here "

main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}

Selle asemel kirjuta see mängumoodi nimi mida sa sinna soovid.

main()
{
print("\n----------------------------------");
print(" Vahvel.net");
print("----------------------------------\n");
}

5) Muuda ära järgnev rida :


public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

NB! Seda mida sa kirjutad "Blank Script" asemel näevad ka kõik teised!


public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Vahvel.net");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

6) Nüüd installi endale arvutisse allolev programm.

dl_f.gif

7) Kui see on arvutisse installitud, siis tõsta see Pawno -> include ja, et seda ka PAWNO's kasutada, pead selle include'ma ka PAWNO'sse, mis käib nii.

#include 
#include 

#if defined FILTERSCRIPT

8) Nüüd saad kasutada strcmp asemel ZCMD. strcmp on algajatele palju raskem, kui ZCMD.

Näide strcmp'ist.

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/komm", cmdtext, true, 10) == 0)
{
	GivePlayerWeapon(playerid, 26, 500);
	return 1;
}
return 0;
}

Aga ZCMD'iga oleks see nii...

CMD:komm(playerid,params[])
{
       GivePlayerWeapon(playerid, 26, 500);
       return 1;
}

9) Nüüd näitan teile, kuidas teha lihtsamat DeathMatch mängumoodi. Esiteks võiksid ära fikseerida kus mängja spawn'ib. Sellejaoks ava oma GTA SAN ANDREAS'e folder ja sealt vali samp_debug ja siis vali Launch Debug. Nüüd oota, kuni ta mängu connectib ning seejärel mine soovitud kohta, kuhu sa soovid spawnida. Kui oled õige koha ülesse leidnud kirjuta /save SaveingPoint. Selle SavingPoint asemel võid ükskõik mida kirjutada. Nüüd kui sul on Spawn koordinaadid olemas, siis otsi oma arvutist ülesse selline fail nagu : savedposition. Ava see TXT fail ja otsi sealt ülesse oma savetud koordinaadid. Mul olid need järgnevad :

AddPlayerClass(0,1505.0670,-892.1097,58.7301,262.0000,0,0,0,0,0,0); // SavingPoint

10) Aga nüüd, et mängja ka seal kohas spawniks pead sisestama selle koodirea PAWNO'sse, kuid sa pead seda natukene kärpima. Kuna on ainult X,Y,Z siis sa pead need ka alles jätma.

1505.0670 - X
-892.1097 - Y
58.7301 - Z

Nüüd sisesta 1505.0670,-892.1097,58.7301 see rida omal järgnevasse ritta.

public OnPlayerSpawn(playerid)
{
return 1;
}

Muudetud kujul peaks see olema järgnev :

public OnPlayerSpawn(playerid)
{
       SetPlayerPos(playerid, 1505.0670,-892.1097,58.7301);
return 1;
}

Nüüd kui mängja siseneb mängu ja vajuta nupule "Spawn" siis ta automaatselt spawnib sinu valitud kohta.

11) Lisame paar käsklust kah. Kui tahad endale serverisse lisada huvitavaid teleporte, siis võta teatavaks, et kõik käib läbi "SetPlayerPos'i". Oletame, et sa tahad korraldada Mount Chilliad'is rallit ja mängjad saaksid sinna käsklusega /ralli.

CMD:ralli(playerid,params[])
{
       SetPlayerPos(playerid, X,Y,Z);
       SendClientMessage(playerid, 0xAA3333AA, " Tere tulemast rallile! ");
       return 1;
}

Nüüd kui mängja kirjutab käskluse /ralli, siis ta automaatselt teletakse Sinu poolt valitud kohta ja samuti saadetakse talle sõnum : " Tere tulemast rallile " punases kirjas. Alloleva lingi kaudu saad natukene värvi koode teada.

http://forum.sa-mp.com/showthread.php?t=177916

12) Aga nüüd sa tahad, et mängjad saaksid endale iga kell mingit teatud relva võtta? Siis pead tegema järgnevat. Kuna seda on lihtsam teha Dialoogi näol, siis alustuseks kirjutame valmis käskluse, mis avab meile relvadialoogi.

CMD:relvad(playerid,params[])
{
      ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Relvad", "AK47\nM4\nSniper Rifle", "Vali", "Sulge");
      return 1;
}

Nüüd seletan lahti, mida mingi teatud rida koodist tähendab.

ShowPlayerDialog - Näitab mängjale dialoogi.
playerid - Defineerib ära kellele ta seda dialoogi näitab. Hetkel ta näitab seda mängjale, kes selle käskluse /relvad kirjutab. 
1 - On sinu dialoogi number. Samuti saad sa selle asemel panna 102 või kirjutama sinna DIALOG_RELVAD, kuid see on natukene raskem, sest sa pead alguses siis ära defineerima, mida DIALOG_RELVAD tähendab.
DIALOG_STYLE_LIST - Näitab ära millise dialoogiga on tegu. http://wiki.sa-mp.com/wiki/Dialog 

13) Nii, meil on dialoog olemas, kuid kui me kirjutame /relvad ja sealt midagi valime, siis ei juhtu midagi, aga paneme selle dialoogi midagi tegema. Sellejaoks on sul vaja leida üles OnDialogResponse.(Allolev kood)

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}

Nüüd kustuta see ära ja asenda sellega allolev kood :

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
   if(dialogid == 1)
   {
       if(response) 
       {
           // Annab relva
           if(listitem == 0) // Kui nad valivad esimese asja ehk AK47
           {
               GivePlayerWeapon(playerid, 30, 120); // Annab mängjale relva AK47 - 120 kuuliga.
           }
           if(listitem == 1) // Kui nad valivad dialoogist 2 asja, siis nad saavad M4'ja
           {
               GivePlayerWeapon(playerid, 31, 120); // Annab mängjale relva M4'i 120 kuuliga.
           }
           if(listitem == 2) // Kui nad valivad kolmanda asja, ehk Sniper Rifel'i
           {
               GivePlayerWeapon(playerid, 34, 28); // Annab mängjale Sniperi Rifle 28 kuuliga.
           }
       }
       return 1;
   }

   return 0;
}

Sellelt lingilt näed sa relvade ID'sid. http://wiki.sa-mp.com/wiki/Weapons

Kui sa tahad relvi muuta, siis muuda järgnevat rida.

GivePlayerWeapon(playerid, 31, 120); 

31 on Relva ID, kui sa tahad mingit muud relva, siis vaata sellelt veebilehelt, mis ma ennem ülal andsin relva ID ja asenda see sinu sooviga.

120 on kuulide arv. Sa võid selle ka vabalt ära vahetada sinu soovi järgi.

 

14) Meil on juba väga palju asju serveris olemas, nüüd võiks serverisse autod lisada. Hetkel teeme väga algelise autode süsteemi. Nimelt kui inimene autosse sisse istub, siis ta saab sellega koheselt sõita. Selleks, et saada oma serverisse autosid lisada, mine oma GTA SAN ANDREASE folderisse ja ava sealt jälle samp_debug ja siis vali launch debug. Nüüd kui oled mängu jõudnud vajuta T tähte ja kirjuta /v select . Sinu ette ilmub nüüd auto, et edasi autosid vaadata vajuta SHIFT ja et tagasi saada vajuta SPACE. Kui oled oma lemmik auto välja valinud ja autole ka sobiva SPAWN koha ( Koht kus su auto tekkima hakkab ) siis istu autosse ja kirjuta /save AUTO1 . Jällegi see AUTO1 võid muuta nii kuidas sina ise seda soovid. Pane Lennuk1000 või ükskõik mis selle asemel. Nüüd kui sul on autod ära valitud ja ära salvestatud, siis võid debugi kinni panna ja avada savedpositions.txt fail. Sealt otsi jällegi ülesse oma salvestatud koht, kui see ülesse leitud, siis võid jälle avada PAWNO ja leida ülesse järgnev koht.

public OnGameModeInit( )
{
   return 1;
}

Sinna return 1; ülesse kirjuta allolev rida :

   AddStaticVehicle(520, 2109.1763, 1503.0453, 32.2887, 82.2873, 0, 0);

AddStaticVehicle on väga hea seepärast kasutada, et saad igakell autot muuta ning sa ei pea seepärast minema uuesti samp_debugi. Nüüd seletan lahti, mida sulgude sees olevad asjad tähendavad.

 

520 - Auto ID. http://wiki.sa-mp.com/wiki/Vehicles:All

2109.1763 - X Asukoht

1503.0453 - Y Asukoht

32.2887 - Z Asukoht

82.2873 - Kui viltu see sõiduk on.

0 - Värv 1 - http://wiki.sa-mp.com/wiki/Color_ID

1 - Värv 2 - http://wiki.sa-mp.com/wiki/Color_ID

 

Oletame, et ma nüüd tahaks endale serverisse lisada autot Infernus musta värvusega, siis ma teen lihtsalt nii :

public OnGameModeInit( )
{
   AddStaticVehicle(411, 2109.1763, 1503.0453, 32.2887, 82.2873, 0, 0);
   return 1;
}

Lihtne ja loogiline :)

 

15) Aga kuidas muuta relvade saamist natukene muhedamaks. Näiteks kui inimene siseneb pickupi, siis talle tuleb ette dialoog, kus on relvade nimetused, samuti ära märgitud hinnad. Ning kui mängja valib mingi relva, siis tal läheb dialoogis mainitud summa raha ära. Alustuseks valmista omale pickup. Nagu allolevas koodis. NB! Selle CreatePickupi pead lisama OnFilterScriptInit ülesse.

CreatePickup(1318, 23, 10.7735, 1517.1450, 12.7560,-1);

Nii, aga mis tähendab mida.

1318 - Pickup'i ID, ehk milline on selle pickupi väljanägemine. 
23 - Näitab ära, mis liiki see pickup on. Hetkel on 23, mis näitab, et kui mängja siseneb pickupi, siis pickup ei kao ära.
10.7735 - X asukoht.
1517.1450 - Y asukoht.
12.7560 - Z asukoht.
-1 - VW ehk VirtualWorld.

http://weedarr.wikidot.com/pickups/

 

Nii, nüüd meil on Pickup olemas, kuid see ei tee hetkel midagi, lihtsalt niisama seisab seal. Aga paneme selle nüüd midagi tegema. Sellejaoks on sul vaja lisada allolev koodirida.

if(IsPlayerInRangeOfPoint(playerid, 7.0, X, Y, Z))

 

Nii, aga mida miski tähendab.

Playerid - Defineerib ära kes peab antud positsioonil olema.
X - X asukoht.
Y - Y asukoht.
Z - Z asukoht.

 

16) Nüüd lisame, et kui mängja on sellel positsioonil siis näidatakse talle seda dialoogi. Sellejaoks lisa allolev kood :

CMD:relvad(playerid,params[])
{
      if(IsPlayerInRangeOfPoint(playerid, 7.0, X, Y, Z))
      ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Relvad", "AK47 - 1000$\nM4 - 2000$\nSniper Rifle - 1500$", "Vali", "Sulge");
      return 1;
}

 

Nii, aga nüüd lisame ka hinnad. Sellejaoks on sul vaja muuta PlayerDialogResponse't. Nagu allolevas koodis :

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
   if(dialogid == 1)
   {
       if(response) 
       {
           // Annab relva
           if(listitem == 0) // Kui nad valivad esimese asja ehk AK47
           {
               GivePlayerWeapon(playerid, 30, 120); // Annab mängjale relva AK47 - 120 kuuliga.
               GivePlayerMoney(playerid, -1000);
           }
           if(listitem == 1) // Kui nad valivad dialoogist 2 asja, siis nad saavad M4'ja
           {
               GivePlayerWeapon(playerid, 31, 120); // Annab mängjale relva M4'i 120 kuuliga.
               GivePlayerMoney(playerid, -2000);
           }
           if(listitem == 2) // Kui nad valivad kolmanda asja, ehk Sniper Rifel'i
           {
               GivePlayerWeapon(playerid, 34, 28); // Annab mängjale Sniperi Rifle 28 kuuliga.
               GivePlayerMoney(playerid, -1500);
           }
       }
       return 1;
   }

   return 0;
}

 

 

NB! ZCMD kasutades oleks soovitav, kui sa kirjutaksid vajalikud koodid lehe kõige viimasele reale.

 

Natukene infot -> http://wiki.sa-mp.com/

 

NB! Võtan ka requeste!

 

ÕPETUS TÄIENEB!

Muudetud liikme Just4Dream'i poolt

Jaga seda postitust


Postituse link
Share on other sites

Suht algeline script, tahtsin proovida compile***, et kas üldse laseb. Siin ainult see spawnimise värk lisatud

 

 

// This is a comment

// uncomment the line below if you want to write a filterscript

//#define FILTERSCRIPT

 

#include

 

#if defined FILTERSCRIPT

 

public OnFilterScriptInit()

{

print("\n--------------------------------------");

print(" nonamed");

print("--------------------------------------\n");

return 1;

}

 

public OnFilterScriptExit()

{

return 1;

}

 

#else

 

main()

{

print("\n----------------------------------");

print(" Blank Gamemode by your name here");

print("----------------------------------\n");

}

 

#endif

 

public OnGameModeInit()

{

// Don't use these lines if it's a filterscript

SetGameModeText("nonamed Script");

AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

return 1;

}

 

public OnGameModeExit()

{

return 1;

}

 

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 OnPlayerConnect(playerid)

{

return 1;

}

 

public OnPlayerDisconnect(playerid, reason)

{

return 1;

}

 

public OnPlayerSpawn(playerid)

{

SetPlayerPos(playerid, (1539.1954,-1663.5631,13.5469);

return 1;

}

 

 

Kui keegi oskab aidata siis palun! :)

Muudetud liikme OnlyTwo'i poolt
Üks sõna oli vale :)

Jaga seda postitust


Postituse link
Share on other sites
Author of the topic Postitas (muudetud)

SetPlayerPos(playerid, AddPlayerClass(1539.1954,-1663.5631,13.5469);

 

Mis asi see on?

:D

SetPlayerPos - Seab mängjale positsiooni.

Näiteks :

CMD:teleport(playerid,params[])
{
       SetPlayerPos(playerid, X , Y ,Z );
       return 1;
}

 

Sul peaks nii olema :

 

SetPlayerPos(playerid, 1539.1954,-1663.5631,13.5469);

 

E: Kui said korda või ei saanud, siis ütle.

Muudetud liikme Just4Dream'i poolt

Jaga seda postitust


Postituse link
Share on other sites

nonamed.pwn(66) : error 001: expected token: ",", but found ";"

nonamed.pwn(67) : warning 217: loose indentation

 

 

siin praegused kõik warningud ja errorid, mis mul on :)

 

 

rida 66: SetPlayerPos(playerid, (1539.1954,-1663.5631,13.5469);

rida 67: return 1;

Muudetud liikme OnlyTwo'i poolt

Jaga seda postitust


Postituse link
Share on other sites
Author of the topic Postitas (muudetud)

rida 66: SetPlayerPos(playerid, 1539.1954,-1663.5631,13.5469);

rida 67: return 1; - Võta caps lock eest ära.

Niimoodi, et SetPlayerPos ja return 1; oleks täpselt üksteise all.

 

CMD:näide(playerid,params[])
{
       SetPlayerPos(playerid, 1539.1954,-1663.5631,13.5469);
       return 1;
}

 

E: Said korda?

Muudetud liikme Just4Dream'i poolt

Jaga seda postitust


Postituse link
Share on other sites

Väike probleem...

 

(92) : error 029: invalid expression, assumed zero

(92) : error 017: undefined symbol "cmd_komm"

(92) : error 029: invalid expression, assumed zero

(92) : fatal error 107: too many error messages on one line

 

public OnPlayerCommandText(playerid, cmdtext[])

{

CMD:komm(playerid,params[])

{

GivePlayerWeapon(playerid, 30, 500);

return 1;

}

 

return 0;

___________________________________________________________________________________________

 

Ehk oskad aidata, üritasin alguses ise käsklust teha, ei õnnestunud, kuid isegi kopeerides sinu kirjutatud näidise, ikka viskab ka erroreid.

Jaga seda postitust


Postituse link
Share on other sites
Külaline
This topic is now closed to further replies.

×
×
  • Loo uus...

Oluline informatsioon

Selle veebisaidi paremaks muutmiseks oleme teie seadmesse paigutanud küpsised . Võite kohandada oma küpsiste seadeid , vastasel juhul eeldame, et te olete küpsiste kasutamisega nõus kui jätkate veebisaidil sirvimist.. Palun lugege läbi Kasutustingimused ja Privaatsuspoliitika.