Otsi Vahvlist
Kuvatakse tulemused sildile ''skripti''.
Leitud 5 tulemust
-
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. 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. 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!
-
Kuidas kirjutada viisakat skripti Antud kirjatüki iva seisneb selles, et jagada oma kogemusi nn viisaka programmeerimise osas, eelkõige muidugi seda, mis puudutab PHP-d. Kuna alates septembrist on mul võimalik suhteliselt vabalt vaadata skripte, kartmata punktide kaotust (ehee, kuulen kadedushüüdeid), siis olen seda ka tegema hakanud. Skriptide juures, mida ma laadinud olen, võite siis leida minu kommentaare, kus ma 10 palli süsteemis hindan skripide sisulist poolt. Millised on kriteeriumid, millest ma hindamisel lähtun, sellest kirjatüki lõpus. Olen neid skripte vaadanud ja kaalunud, ütlen ausalt, minul ei ole neist suurt midagi õppida. Ja minu jaoks on vägagi oluline just sisuline pool. Allpool toon puudused, mis skriptides on üldlevinud. 1. Skriptid ei ole loetavad Skriptid kirjutatakse nii, et praktiliselt ei ole võimalik neid normaalselt lugeda, puuduvad kommentaarid, liigestatus ja stiil. Mida siis teha, et skriptid oleksid loetavad a) kasutage reavahetust - kõik asjad üksteise all ilma mingite vahedeta muudab skripti äärmiselt loetamatuks b) lisage kommentaare - mingi tegevuse alguses oleks viisakas lisada kommentaar, mida alljärgnev lõik teeb c) kasutage treppimist - programmi sõlmed võiksid olla nihkes paremale teatud sammu võrra (tabuleeritud). Allpool on kaks näidet, eks otsutsage ise, kumb on loetavam (näide on võetud ühest allalaaditud skriptist). Esiteks originaal PHP kood: if($HTTP_POST_VARS[reg]) { $kasutajanimi = $HTTP_POST_VARS[kasutajanimi]; $salasona = $HTTP_POST_VARS[salasona]; $salasona2 = $HTTP_POST_VARS[salasona2]; $email = $HTTP_POST_VARS; $avakasfail = fopen($kasfailnimi, "r"); $kasfailsisu = fread($avakasfail, filesize($kasfailnimi)); fclose($avakasfail); eregi("(.*)#\|$kasutajanimi\|(.*)", $kasfailsisu, $tulemus); $kasutajanimi2 = $tulemus[2]; eregi("(.*)#\|(.*)\|(.*)\|(.*)\|$email\|(.*)", $kasfailsisu, $tulemus2); $email2 = $tulemus2[2]; Teiseks natuke parandatud variant koos treppimise ja kommentaaridega PHP kood: # Kui parameeter reg on olemas if($HTTP_POST_VARS[reg]) { # Määrame muutujate väärtused $kasutajanimi = $HTTP_POST_VARS[kasutajanimi]; $salasona = $HTTP_POST_VARS[salasona]; $salasona2 = $HTTP_POST_VARS[salasona2]; $email = $HTTP_POST_VARS; # Avame faili ja loeme selle sisu $avakasfail = fopen($kasfailnimi, "r"); $kasfailsisu = fread($avakasfail, filesize($kasfailnimi)); fclose($avakasfail); # Teostame kontrollid eregi("(.*)#\|$kasutajanimi\|(.*)", $kasfailsisu, $tulemus); $kasutajanimi2 = $tulemus[2]; eregi("(.*)#\|(.*)\|(.*)\|(.*)\|$email\|(.*)", $kasfailsisu, $tulemus2); $email2 = $tulemus2[2]; } Eks otsustage ise, kumb on loetavam 2. Kasutage SWITCH direktiivi Kui te kontrollite mingit parameetrit, millel on vastavalt väärtusele erinev tegevus, siis kasutatakse enamjaolt IF direktiive, mis laotakse lihtsalt üksteise alla Näide PHP kood: if ($a = 1) { $b = 1; echo "Esimene"; } if ($a = 2) { $b = 2; echo "Teine"; } if ($a = 3) { $b = 3; echo "Kolmas"; } Aga loetavuse seisukohast oleks mõistlik teha hoopis nii: PHP kood: switch($a) { case(1) : $b = 1; echo "Esimene"; break; case(2) : $b = 2; echo "Teine"; break; case(3) : $b = 3; echo "Kolmas"; break; } 3. Kasutage funktsioone sarnaste tegevuste jaoks Huvitav on see, et praktiliselt ei kasutata funktsioone oma skriptides (peale standadrsete). Samas on tihti pikalt-laialt defineeritud mingid laused, mis teevad samu asju, lihtsalt üks parameeter on erinev Näiteks PHP kood: if ($a = 1) { $b = 1; echo " Esimene "; } if ($a = 2) { $b = 2; echo " Teine "; } if ($a = 3) { $b = 3; echo " Kolmas "; } Palju parem oleks teha hoopis nii PHP kood: function tryki($mida) { echo " $mida "; } switch($a) { case(1) : $b = 1; tryki("Esimene"); break; case(2) : $b = 2; tryki_lause("Teine"); break; case(3) : $b = 3; tryki_lause("Kolmas"); break; 4. Disain ja äriloogika on eraldamata Kuna PHP väljund on HTML, siis skriptid sisaldavad endas ka loomulikult HTML elemente, mida siis direktiivi echo abil väljastatakse. Kui nüüd kõik kupatus on üksteise all, pole kasutatud ei treppimist, funktsioone ja switch'i, samuti on kohe ka echo abil tehtud HTML välundamine, on tulemuseks skript, mille kasutuselevõtmine on tihtipeale vägagi raske, kuna kogu disaini osa tuleb läbi käia. Selgituseks, mis on äriloogika. Äriloogika on programmi oluliseim osa, mis töötleb ja muudab andmevoogu, suhtleb andmebaasidega ja moodustab väljundi. Väljund ehk disain ise ei ole osa äriloogikast, vaid moodustab eraldiseisva programmi osa. Tihti nimetatakse seda ka kasutajaliideseks ehk User Interface. Korralik skript peaks töötama erinevate kasutajaliidestega ilma, et see nõuaks meeletuid pingutusi. Mida siis teha? a) ärge kasutage HTML väljsatamiseks echo direktiivi, vaid PHP tääge. PHP kood: echo " Minu asi"; Kasutage hoopis PHP kood: ?> Minu asi <?php b) proovige disain äriloogikast eraldada kas funktsioonide või inkljuudidena. Näiteks lehe algus ja lõpp võiksid olla inkljuudidena PHP kood: <?php include "header.php"; # Siin on skripti sisu include "footer.php" ?> Kogu ülejäänud disain võiks olla eraldi funktsioonides, võimaluse lausa eraldi inkljuudis. Kuidas seda täpselt teha, selle kohta kirjutaks lausa eraldi õpetuse. Finale Ultimo Mida ma hindan siis eraldi skriptide juures, ehk siis hinded skripti kohta 1. Loetavus - kuivõrd on skript loetav 2. Skripti originaalsus - kuivõrd on väljapakutud skript originaalne 3. Lahenduse originaalsus - kuivõrd on lahendus originaalne 4. Integreeritavus - kuivõrd on skript integreeritav erinevate süsteemidega ja teiste skriptidega 5. Professionaalsus - kuivõrd on lahenduse sisu professionaalne (loogilised sõlmed, funktsioonid, äriloogika ja disaini omavaheline seos). Seniks aga kõigile noortele programmeerijatele rahulikku meelt ja püüet areneda.
-
Tere! Oleks vaja programmeerijat, kes teeks Fortumo kaudu dünaamilise smsteenuse. Vaja oleks, et registreerunud inimesed saaksid tellida smsiga omale krediiti kontole. Paluks hinnapakkumisi ja raskusastme kirjeldamist. Näidis sms.php kood on Fortumo-s kirjas, kuid ma pigem ei hakkaks ise torkima.
-
1. : http://kbox.hostli.eu/lisaserver.php lühikirjeldus : sisestad kasti IP ja lisab selle MYSQLi ,ning neid servereid mis on kuvatud näitab seal lehel ära. Saab tellida ka preemiumiks , mis näitab sinu serveri bannerit kõige ees. Kaasa saab premiumi SMS skripti. Hind : 1€ 2. Gift code süsteem.NB : POOLIK !! Lühikirjeldus : Saadad SMS , ning sule saadetakse vastu kood , mida saad hiljem kasutada kingikoodina , kust saab välja võtta enda teenuse , oleneb millise SMS saatisid ( SMS skripte on mitu.) , ning teha see aktiivseks serveris. Poolikuna 1€ Kui teha valmis , siis 3€ MSN : [email:1ulisry1]renn47@hot.ee[/email:1ulisry1] ja veel , ma ei ole eriline seletaja .. niiet kui arusaamatuks jääb midagi siis MSNi
-
Kui compilemisel ütleb, et errorid vms, siis skript on vigane. (Tuleb leida teist uut skripti) Kui compilemisel ütleb, et cant found JDK vms, siis sul arvutis JDK puudub. (http://www.java.sun.com - Tõmba sealt JDK-i)