Jump to content

návod Vytváříme mód - PHP - Nový mód


Ewwe

Recommended Posts

  • Administrátor

Předem bych rád upozornil, že v repo může být i napřed před návody. Už jen z toho důvodu , že si hodlám kód připravovat a nepsat ho přímo při návodu.

 

Pojďme si založit nový mód. Ve složce php si vytvoříme složku s libovolným názvem. V mém případě se složka jmenuje samp-php-gamemode. Do ní vytvoříme soubor gamemode.php

 

Do souboru gamemode.php si připravíme dva eventy prvním bude nastartování módu a druhým připojení hráče.

<?php
include "core/bootstrap.php";


Event::on('GameModeInit', function() {

});


Event::on('PlayerConnect', function($player){


});

A začneme tím , že přivítáme hráče na našem serveru... Použijeme k tomu známou funkci SendClientMessage byť krapet pozměněnou po stránce argumentů.

SendClientMessage( 0xFF00FF00 , "Hráč ".$player->getName()." se připojil na náš PHP server :)");

Asi se možná ptáte ale kde je id kterému se má message poslat ? Event si ho sám určí icon_e_smile.gif Respektive si ho najde z instance $player. 

Dále si můžeme nastavit nějaké ty informace o serveru..

Například GameModeText a PED animace

Event::on('GameModeInit', function() {
    Server::setGameModeText( "Ewolutions PHP Gamemode" );
    Server::usePlayerPedAnims();
});

Jména funkcí jsou nebo mohou být krapet odlišná. Ale veškeré funkce najdete ve složce php/core. 

 

Tímto dílem bych ve Vás chtěl probudit trošku zvědavosti a navnadit Vás co všechno by mohlo být možné icon_e_smile.gif

V příštím už se vrhneme na něco komplexnějšího... Třeba registraci icon_e_smile.gif

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

počkaj, ak správne chápem, tak ten GM čo si vytvoril v predchádzajúcom návode volá celú zložku PHP (všetky *.php čo sú v zložke PHP??

A druhá vec, je nutná nejaká kompilácia? nakoľko ak sa všetky príkazy "pridávajú" až po spustení kódu tak asi nie :d

 

Ako presne to funguje?

Ďalej, nejaký zoznam funkcií (resp. PUBLICov) pretože pozerám že sú mierne pozmenené oproti klasickému pawnu.

A čo ma najviac zaujíma - ako určím iného hráča?

Napr. chcem poslať správu že Hráč xxx zabil hráča yyy? :d

 

Áno, vyzerá to zaujímavo :d

Link to comment
Share on other sites

  • Administrátor

1. v configu je samphpmode myslel jsem , že jsem to napsal ale zpětně zjištuji , že ne. Tzn , že při spuštění serveru se našte gamemode.php v této složce. Nic se nekompiluje.. resp ty nic nekompiluješ. V návodu je věta Jména funkcí jsou nebo mohou být krapet odlišná. Ale veškeré funkce najdete ve složce php/core. 

 

Jiného hráče určíš třeba tím , že ho máš nadefinovaného jako jinou instance v enventu.

 

Ex

Event::on('PlayerDeath', function($player, $killer, $reason) {
    SendClientMessage( 0xFF00FF00 , "Hráč ".$player->getName()." zabil hráče ".$killer->getName().":)");
});
Link to comment
Share on other sites

  • Administrátor

a keď chcem dajme tomu cyklus na všetkých hráčov? tak klasický for?

 

v dalším návodu bude... 

ale když už se ptáš

foreach( Player:all() as $player )
{
    $player->isAdmin = true;
}
Link to comment
Share on other sites

Když ti nevyhovuje pawn, tak hledáš alternativu. Weby, aplikace apod. taky můžeš psát ve více jazycích a vybereš si ten, který ti vyhovuje. Jednou výhodou (jestli to je v tomto případě vůbec potřeba) je, že php je, oproti pawn, objektově orientovaný jazyk.

 

Mezi další alternativy patří například c, c++, c#, java, javascript, lua atd.

Edited by Lukasz
Link to comment
Share on other sites

  • Administrátor

Jak říká Lukas.. PHP oproti pawn má výhodu , že je objektové. A ušetří ti to práci .. Vem si jen message o připjení

//PAWN
new string[128],n[21];
GetPlayerName(playerid,n,21);
format(string,128,"HRac %s se pripojil",n);
SendClientMessageToAll(-1,string );

//SAMPHP
sendClientMessageToAll(-1,"Hráč ".$player->getName()." se připojil");
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...