Apache 1 Odesláno: 11. Duben, 2016 Share Odesláno: 11. Duben, 2016 Zdravím,tak mě napadlo, udělat minomet, ve stylu tepelného zaměřování, attachuntý na Yosemite.Do hlavy mi skočila myšlenka, tak sem se jí teda snažil udělat co nejreálněji.. Script obsahuje celkem 3 příkazy, /yosemite pro spawnutí vozidla s minometem, /desyosemite a /sestrelit id.A ted samotné vystřelení, pro sestřelí zadaného ID nesmí být od vás víc jak 200 metrů. Při výsřelu letí projektil svísle nad vás a přibližně po 500 metrech začne padat na zadané ID řízený projektil.Při testování sem žádný bug nenašel.Sem nováček, tak berte ohled na to, že né vše bude napsané zrovna nejlíp Downoad > http://ulozto.cz/xMFE8pVb/minomet-sa-mp-rar < #include <a_samp> #define SCM SendClientMessage new Yosemite; new Javelin; new Projektil; new Nabiti[MAX_PLAYERS]; new VY[MAX_PLAYERS]; new Sestreleny; public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Minomet by Misan"); print("--------------------------------------\n"); SetTimer("YosemiteInfo", 600000, true); return 1; } forward YosemiteInfo(playerid); public YosemiteInfo(playerid) { if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "Na serveru se nachází pojízdný minomet, můžeš požádat RCON administrátora, aby ti ho spawnul!"); else if(IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "Na serveru se nachází pojízdný minomet, pro použití zadej /yosemite nebo /sestrelit id"); return 1; } forward NabitiJavelinu(playerid); public NabitiJavelinu(playerid) { Nabiti[playerid] = 0; return 1; } forward ZamireniCile(playerid); public ZamireniCile(playerid) { new Float: X, Float: Y, Float: Z; new Float: OX, Float: OY, Float: OZ; GetPlayerPos(Sestreleny, X, Y, Z); GetObjectPos(Projektil, OX, OY, OZ); MoveObject(Projektil, X, Y, Z, 35); SetTimerEx("TepelneZamerovani", 10, 1, "i", playerid); if(OZ == Z) { DestroyObject(Projektil); } return 1; } forward TepelneZamerovani(playerid); public TepelneZamerovani(playerid) { new Float: X, Float: Y, Float: Z; new Float: OX, Float: OY, Float: OZ; GetPlayerPos(Sestreleny, X, Y, Z); GetObjectPos(Projektil, OX, OY, OZ); MoveObject(Projektil, X, Y, Z, 70); if(OZ + random(1) == Z) { DestroyObject(Projektil); CreateExplosion(OX, OY , OZ, 6, 10); } return 1; } public OnVehicleDeath(vehicleid, killerid) { DestroyVehicle(Yosemite); DestroyObject(Javelin); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/yosemite", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "[!] Tento příkaz je určen pro RCON administrátory [!]"); else if(IsPlayerAdmin(playerid)) { new Float:X, Float:Y, Float:Z, Float:A, Jmeno[15], Text[65]; GetPlayerPos(playerid, X, Y, Z); GetPlayerFacingAngle(playerid, A); Yosemite = CreateVehicle(554, X, Y, Z, A, 0, 1, 3000); Javelin = CreateObject(360, X, Y, Z, 0.00000, -90.00000, 90.00000); AttachObjectToVehicle(Javelin, Yosemite, -0.02941, -0.68162, 0.40010, 0.00000, -90.00000, 90.00000); GetPlayerName(playerid, Jmeno, sizeof (Jmeno)); format(Text, sizeof(Text),"[!] RCON Administrátor %s spawnul pojízdný minomet [!]",Jmeno); SendClientMessageToAll(0x00FF00, Text); } return 1; } if (strcmp("/desyosemite", cmdtext, true, 10) == 0) { new Jmeno[15], Text[65]; DestroyVehicle(Yosemite); GetPlayerName(playerid, Jmeno, sizeof (Jmeno)); format(Text, sizeof(Text),"[!] RCON Admistrátor %s nechal pojízdný minomet zničit [!]",Jmeno); SendClientMessageToAll(0x00FF00, Text); DestroyObject(Javelin); return 1; } if (strcmp("/sestrelit", cmdtext, true, 10) == 0) { new Float:X, Float:Y, Float: Z, SJmeno[15], Jmeno[15], Text[60]; Sestreleny = strval(cmdtext); GetPlayerPos(playerid, X, Y, Z); GetPlayerName(Sestreleny, SJmeno, sizeof(SJmeno)); if(!strlen(cmdtext)) return SCM(playerid, 0x00FF00, "[!] Použití /sestrelit id [!]"); else if(!IsPlayerConnected(Sestreleny)) return SendClientMessage(playerid, 0x00FF00, "[!] Žádné takové ID není připojené [!]"); else if(playerid == Sestreleny) return SCM(playerid, 0x00FF00, "[!] Šílenče! Chceš se snad nechat zabít? [!]"); if(IsPlayerInRangeOfPoint(Sestreleny, 200, X, Y, Z)) { if(Nabiti[playerid] == 0) { if(VY[playerid] == 1) { GetPlayerName(playerid, Jmeno, sizeof(Jmeno)); format(Text, sizeof(Text),"[!] Hráč %s vystřelil z minometu na hráče %s [!]", Jmeno, SJmeno); SendClientMessageToAll(0x00FF00, Text); Projektil = CreateObject(345, X -0.07671, Y -0.84980, Z + 1.10453, 90.00000, 0.00000, 0.00000); MoveObject(Projektil, X, Y, Z + 3000, 32); Nabiti[playerid] = 1; SetTimerEx("NabitiJavelinu", 10000, false, "i", playerid); SetTimerEx("ZamireniCile", 4000, false, "i", playerid); } else SCM(playerid, 0x00FF00, "[!] Nejsi ve speciálním yosemitu [!]"); } else GameTextForPlayer(playerid, "Nabijim", 1000, 1); } else if(!IsPlayerInRangeOfPoint(Sestreleny, 200, X, Y, Z)) return SCM(playerid, 0x00FF00, "[!] Hráč na kterého se chystáš vystřelit musí být od tebe míň jak 200 metrů [!]"); return 1; } return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { if(vehicleid == Yosemite) { VY[playerid] = 1; SCM(playerid, 0x00FF00, "Nasednul si do vojenského Yosemitu, pro vystřelení z minometu zadej /sestrelit id"); } return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { if(vehicleid == Yosemite) { VY[playerid] = 0; } return 1; } Minomet SA-MP.rar 1 Link to comment Share on other sites More sharing options...
xX420_Pu55yArmaged0n_420Xx 17 Odesláno: 11. Duben, 2016 Share Odesláno: 11. Duben, 2016 Ty nováčik... Nováčikovia nepíšu scripty, nováčikovia sa pýtaju na to prečo im nefunguje script bez semi-colonov. Ak si naozaj taký nováčik ako hovoríš, máš moje uznanie, určite pokračuj v učení sa. Link to comment Share on other sites More sharing options...
Globální moderátor HighPrint 177 Odesláno: 11. Duben, 2016 Globální moderátor Share Odesláno: 11. Duben, 2016 Ne všichni jsou jako ty Cybri Celej ten public YosemiteInfo je špatně. Kontroluješ jednou za 60 000ms jestli hráč ID 0 je admin. new Nabiti[MAX_PLAYERS];new VY[MAX_PLAYERS]; Tohle mohlo být bool, ale z hlediska paměti je to asi jedno. if(!strlen(cmdtext)) return SCM(playerid, 0x00FF00, "[!] Použití /sestrelit id [!]"); Tohle ti vrátí vždy true, cmdtext je včetně toho příkazu tzn. cmdtext[0-9] = "/sestrelit" new Jmeno[15] Jenom drobnost, nick v sa-mp může být dlouhý 24 znaků if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "[!] Tento příkaz je určen pro RCON administrátory [!]"); else if(IsPlayerAdmin(playerid)) No buď je admin nebo není, tam není už potřeba zjišťovat jestli admin je. if(!IsPlayerAdmin(playerid)) return ...else{ //kod } No jinak dobrá práce Link to comment Share on other sites More sharing options...
PinkSmoothie 104 Odesláno: 11. Duben, 2016 Share Odesláno: 11. Duben, 2016 chcelo by to video, ale z popisu to vyzera ako dobry napad, ktory sa ceni. Teda pokial je to naozaj tvoj napad. Link to comment Share on other sites More sharing options...
Apache 1 Odesláno: 11. Duben, 2016 Author Share Odesláno: 11. Duben, 2016 (upraveno) Nápad je to můj.. Napadlo mě to při sledování jednoho videa.. Celkové v poslední době dělám podobné scripty, jako třeba bombarder, rakety na rustlera atd. No.. Tohle narozdíl od ostatních aspoň funguje video bych mohl nahrat.. Kdyžtak to tu zítra dám chcelo by to video, ale z popisu to vyzera ako dobry napad, ktory sa ceni. Teda pokial je to naozaj tvoj napad. Edited 11. Duben, 2016 by Apache Link to comment Share on other sites More sharing options...
Scydo 397 Odesláno: 11. Duben, 2016 Share Odesláno: 11. Duben, 2016 ~> Tak hodnocení ke konci a ke kódu: já bych měl k němu už jenom takové dodatky typu někde zbytečné rozsáhlejší podmínkování, trošku špatně pole(EDIT: ach, na to už narážel HP ), návratové hodnoty... ale, pokud tě to napadlo jako fakt tebe, nikde jsi nic podobného neviděl, ani návod ani script, tak u mě máš plus už jenom za zajímavý nápad... už to chtělo něco jiného, kromě neustálého tipy, vip, warpy... Link to comment Share on other sites More sharing options...
Apache 1 Odesláno: 11. Duben, 2016 Author Share Odesláno: 11. Duben, 2016 (upraveno) Jedine co nebylo z mojí hlavy, bylo to CreateExplosion a použití /prikaz id.. Jinak vsě sem se snažil napsat z toho co sem se v poslední době naučil ~> Tak hodnocení ke konci a ke kódu: já bych měl k němu už jenom takové dodatky typu někde zbytečné rozsáhlejší podmínkování, trošku špatně pole(EDIT: ach, na to už narážel HP ), návratové hodnoty... ale, pokud tě to napadlo jako fakt tebe, nikde jsi nic podobného neviděl, ani návod ani script, tak u mě máš plus už jenom za zajímavý nápad... už to chtělo něco jiného, kromě neustálého tipy, vip, warpy... Jak říkám.. s pawnem sem teprve na začátku.. Nějaké funkce size znám, ale nějaké zase ne.. Například zmiňovaný bool Slyším poprvé Ne všichni jsou jako ty Cybri Celej ten public YosemiteInfo je špatně. Kontroluješ jednou za 60 000ms jestli hráč ID 0 je admin. new Nabiti[MAX_PLAYERS]; new VY[MAX_PLAYERS]; Tohle mohlo být bool, ale z hlediska paměti je to asi jedno. if(!strlen(cmdtext)) return SCM(playerid, 0x00FF00, "[!] Použití /sestrelit id [!]"); Tohle ti vrátí vždy true, cmdtext je včetně toho příkazu tzn. cmdtext[0-9] = "/sestrelit" new Jmeno[15] Jenom drobnost, nick v sa-mp může být dlouhý 24 znaků if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "[!] Tento příkaz je určen pro RCON administrátory [!]"); else if(IsPlayerAdmin(playerid)) No buď je admin nebo není, tam není už potřeba zjišťovat jestli admin je. if(!IsPlayerAdmin(playerid)) return ... else { //kod } No jinak dobrá práce Edited 11. Duben, 2016 by Apache Link to comment Share on other sites More sharing options...
xX420_Pu55yArmaged0n_420Xx 17 Odesláno: 12. Duben, 2016 Share Odesláno: 12. Duben, 2016 Ne všichni jsou jako ty Cybri Celej ten public YosemiteInfo je špatně. Kontroluješ jednou za 60 000ms jestli hráč ID 0 je admin. new Nabiti[MAX_PLAYERS]; new VY[MAX_PLAYERS]; Tohle mohlo být bool, ale z hlediska paměti je to asi jedno. if(!strlen(cmdtext)) return SCM(playerid, 0x00FF00, "[!] Použití /sestrelit id [!]"); Tohle ti vrátí vždy true, cmdtext je včetně toho příkazu tzn. cmdtext[0-9] = "/sestrelit" new Jmeno[15] Jenom drobnost, nick v sa-mp může být dlouhý 24 znaků if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "[!] Tento příkaz je určen pro RCON administrátory [!]"); else if(IsPlayerAdmin(playerid)) No buď je admin nebo není, tam není už potřeba zjišťovat jestli admin je. if(!IsPlayerAdmin(playerid)) return ... else { //kod } No jinak dobrá práce Klamár jeden, ja viem použivať semi-colony, ja len neviem napísať nič viac než hello world a kalkulačku Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now