Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Lucjan - zdjęcie

Lucjan

Rejestracja: 17.05.2015
Aktualnie: Nieaktywny
Poza forum Ostatnio: 22.10.2015 17:31
-----

#705713 [ROZWIĄZANE] Kiedy klasa ma sg550 serwer dostaje crasha, nie działające dmg o...

Napisane przez plx211 w 09.07.2015 20:23

zamien:

if(active[attacker])
{
	decl String:sWeapon[32];
	GetClientWeapon(attacker, sWeapon, sizeof(sWeapon));
	if(StrEqual(sWeapon, "weapon_ssg08"))
	{
		damage += (float(Cmod_GetINT(attacker))/2);
		return Plugin_Changed;
	}
}

return Plugin_Continue;

na:

if(active[attacker])
{
	decl String:sWeapon[32];
	GetClientWeapon(attacker, sWeapon, sizeof(sWeapon));
	if(StrEqual(sWeapon, "weapon_ssg08"))
	{
		damage += float(Cmod_GetINT(attacker))*0.2;
		return Plugin_Changed;
	}
}

return Plugin_Continue;

  • +
  • -
  • 1


#705667 [ROZWIĄZANE] Kiedy klasa ma sg550 serwer dostaje crasha, nie działające dmg o...

Napisane przez Linux' w 09.07.2015 13:17

W CS:GO nie ma sg550 :mur:  lecz jest sg556. Dlatego crashuje. Co do obrazen, zamien:

if(active[attacker])
{
	decl String:sWeapon[32];
	GetClientWeapon(attacker, sWeapon, sizeof(sWeapon));
	if(StrEqual(sWeapon, "weapon_ssg08"))
	{
		damage += (float(Cmod_GetINT(attacker))/2);
		return Plugin_Changed;
	}
}

return Plugin_Continue;

Na

if(active[attacker])
{
	decl String:sWeapon[32];
	GetClientWeapon(attacker, sWeapon, sizeof(sWeapon));
	if(StrEqual(sWeapon, "weapon_ssg08"))
		damage += (float(Cmod_GetINT(attacker))/2);
}

return Plugin_Changed;

To beda dzialac prawidlowo.


  • +
  • -
  • 1


#687078 Cmod czyli codmod dla csgo

Napisane przez plx211 w 08.02.2015 16:47

[info=Aktualizacja]
http://amxx.pl/topic...własny-mod-rpg/
[/info]

Witam.
 
Jako że kod pisałem od ręki (z nudów) aktualnie nie jest najwyższych lotów (wymaga uporządkowania - co zrobię gdy będę miał więcej czasu).
Znając życie mod będzie sypał bardziej błędami niż winda, dlatego wszystkie błędy/propozycje proszę zgłaszać jak najprędzej.
 
Chciał bym podziękować QTM_Peyot za codmod'a :D
opis.png
 
Cmod to przepisany codmod z CS 1.6 dla CS:GO.
Aktualnie jest:
  • 7 prostych klas (z czego 2 premium: Admiral [Flaga:Admin_Custom1] oraz Talib [Flaga:Admin_Custom2])
  • 13 prostych itemów (póżniej dorobię więcej).
cvary.png
 
//ile dostaniemy exp'a za kill'a
cmod_expkill 10 

//Maksymalny poziom
cmod_maxlvl 200

//Ustawia ile exp'a potrzebne do zdobycia 1 poziomu
cmod_lvlratio 35

komendy.png
 
//Wybór klasy
sm_klasa
sm_class

//Lista klas	
sm_klasy
sm_classinfo

//menu statystyk	
sm_statystyki
sm_staty
sm_stats

//opis item'u	
sm_item
sm_perk
	
//wyrzucanie item'u
sm_drop
sm_wyrzuc
	
//resetowanie statystyk
sm_reset

//używanie item'u	
sm_useitem

//używanie skill'i klasy
sm_useskill
instalacja.png
1) Wypakowujemy
2) Kopiujemy zawartość do csgo
download.png

Załączone pliki


  • +
  • -
  • 22


#696239 [Cmod] Tworzenie podst. klasy + mały opis api

Napisane przez plx211 w 06.04.2015 19:16

0. Wstęp



Jako że ostatnio dużo osób do mnie pisze obnośnie pomocy z tworzeniem klas, postanowiłem napisać ten oto drobny poradnik ukazujący tą "Czarną Magie".
Z góry przepraszam za wszelkie błędy ortograficzne (przepuszczałem przez "sprawdzaniepisowni" ale się wykrzaczył przez znaki specjalne).
 

1. Piszemy klase



Co będzie nam potrzebne:

  • Kompilator sourcemod (ja używam v1.6.4) z wgranym api cmod'a
  • Wygodny edytor textu (najlepiej z podświetleniem składni - ja używam Geany z składnią C++)
  • pomysł na klase ;)

Moja klasa będzie miała następujące parametry:

  • Nazwa: NikuSan
  • Opis/umiejętność: Przy każdym użyciu skilla dostaje flash'a
  • Bronie: awp, tec-9, flashbang
  • Statystyki INT/CON/STR/DEX: 22/10/33/90

A o to nasz "kod startowy":

#include <sdktools>
#include <sdkhooks>
#include <sourcemod>

public Plugin:myinfo = {
name = "NikuSan",
author = "PLX",
description = "Przy każdym użyciu skilla dostaje flash'a",
version = "1.0",
url = "RedTube.plx"
}

public OnPluginStart(){

}

Pierwszym krokiem który musimy zrobić jest załączenie api, aby tego dokonać pod:

#include <sdktools>
#include <sdkhooks>
#include <sourcemod>

dodajemy:

#include <cmod>

Gdzieś musimy przechowywać informacje o klasie, dlatego pod wyżej wymienionymi musimy dodać następujący kod:

//Tworzymy zmienne przechowujące informacje o klasie oraz je wypełniamy
new const String:nazwaKlasy[] = "NikuSan";
new const String:opisKlasy[] = "Przy każdym użyciu skilla dostaje flash'a";
new const intKlasy = 22;
new const conKlasy = 10;
new const strKlasy = 33;
new const dexKlasy = 90;

//Tworzymy uchwyt dla adt_array (który będzie przechowywał liste broni)
new Handle:bronieKlasy;

Czas nastał na stworznie adt_array który będzie przechowywał listę naszych broni, aby tego dokonać do funkcji OnPluginStart() dodajemy:

//Tworzymy adt_array dla listy broni
bronieKlasy = CreateArray(32);

Następnie wypełniamy adt_array listą broni które nasza klasa ma mieć, w następujący sposób:

//Dodajemy bronie do adt_array
PushArrayString(bronieKlasy, "weapon_awp");
PushArrayString(bronieKlasy, "weapon_tec9");
PushArrayString(bronieKlasy, "weapon_flashbang");

Skoro mamy już zapisane wszystkie informacje które zostaną przekazane do silnika, to przyszedł czas na wysłanie ich, w tym celu  pod powyszym kodem dodajemy:

//Rejestrujemy klase w silniku
Cmod_RegisterClass(nazwaKlasy, opisKlasy, intKlasy, conKlasy, strKlasy, dexKlasy, bronieKlasy);

A teraz ten nieszczęsny skill.
Wpierw tworzymy funkcje odpowiedzialną za aktywacje skilla:

//Tworzymy funkcje, która będzie wywoływana podczas aktywacji skilla przez gracza
public Cmod_OnClientUseSkill(client){

}

Następnie dodajemy do niej:

//Dajemy graczu flash'a
GivePlayerItem(client, "weapon_flashbang");

Zapisujemy następnie kompilujemy klase. Gotowe :D
Dla tych którym się nie udało, niech sobie porównają kod:

#include <sdktools>
#include <sdkhooks>
#include <sourcemod>
#include <cmod>

//Tworzymy zmienne przechowujące informacje o klasie oraz je wypełniamy
new const String:nazwaKlasy[] = "NikuSan";
new const String:opisKlasy[] = "Przy każdym użyciu skilla dostaje flash'a";
new const intKlasy = 22;
new const conKlasy = 10;
new const strKlasy = 33;
new const dexKlasy = 90;

//Tworzymy uchwyt dla adt_array (który będzie przechowywał liste broni)
new Handle:bronieKlasy;

public Plugin:myinfo = {
    name = "NikuSan",
    author = "PLX",
    description = "Przy każdym użyciu skilla dostaj flash'a",
    version = "1.0",
    url = "RedTube.plx"
}

public OnPluginStart(){
    //Tworzymy adt_array dla listy broni
    bronieKlasy = CreateArray(32);
    
    //Dodajemy bronie do adt_array
    PushArrayString(bronieKlasy, "weapon_awp");
    PushArrayString(bronieKlasy, "weapon_tec9");
    PushArrayString(bronieKlasy, "weapon_flashbang");
    
    //Rejestrujemy klase w silniku
    Cmod_RegisterClass(nazwaKlasy, opisKlasy, intKlasy, conKlasy, strKlasy, dexKlasy, bronieKlasy);
}

//Tworzymy funkcje, która będzie wywoływana podczas aktywacji skilla przez gracza
public Cmod_OnClientUseSkill(client){

    //Dajemy graczu flash'a
    GivePlayerItem(client, "weapon_flashbang");
}

 

2. Podst. omówienie  api



2.1 Funkcje



Cmod_RegisterClass
Spoiler

 
Cmod_GetClientBonusWeapons
Spoiler

 
Cmod_GetAllowWeapons
Spoiler

 
Cmod_GetClientWeapons
Spoiler

 

2.2 Forwardy



Cmod_OnClassEnabled
Spoiler

 
Cmod_OnClassDisabled
Spoiler

 
Cmod_OnClientUseSkill
Spoiler

 
Cmod_OnGetNewClassID
Spoiler

 
[h1]3 Ostrzeżenia[/h2]

  • Cześć funkcji z api nie jest do końca zabezpieczona, dlatego upewnij się że podajesz prawidłowe dane
  • Nie dodawaj do listy broni weapon_knife, jeśli go dodasz może wystąpić bug z lewitującym nożem przed graczem
  • Nigdy nie zamykaj adt_array jeśli używa go silnik, może to spowodować crash serva

4. Dodatkowo


4.1 m4a1-s



Aby dodać graczu broń m4a1-s należy także dodać do dozwolonych broni (Cmod_GetClientWeapons) dodać broń m4a4 (tak sm uznaje m4a1-s), sytuacja wygląda podobnie z usp
 

4.2 Vip


public Cmod_OnClassEnabled(client)
{
	if(!GetAdminFlag(GetUserAdmin(client), Admin_Custom1)){
		PrintToChat(client, "\x01\x0B\x01 \x07%s \x06Klasa dostępna tylko dla posiadaczy vip'a!", MOD_TAG);
		return CMOD_DISABLE;
	}
	active[client] = true; // <----- opcjonalne
	return CMOD_CONTINUE;
}

4.3 Ciekawostka



Możesz na bieżąco zmieniać bronie klasy (lecz pamiętaj aby nie zamykać adt_array jeśli silnik z niego korzysta)


  • +
  • -
  • 11