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
 

MrBully - zdjęcie

MrBully

Rejestracja: 06.12.2013
Aktualnie: Nieaktywny
Poza forum Ostatnio: 03.06.2023 11:09
-----

Moje tematy

Tworzenie Zapisu SQL od podstaw

29.01.2023 11:13

Poradnik jak napisać zapis sql od podstaw

na samej górze 

#include <sqlx>
#include <amxmodx>

niżej zmienne 

// zmienna do cvarów 
new g_pCvarDB[4] 

new kille[33], 
    deady[33]

enum
{
	Host = 0,
	User,
	Pass,
	DB
}
new Handle:g_hTuple
//plik do logów w przypadku błędów 
new const g_szLogFile[] = "Zapislogi.log" 
// zmienna z poleceniem sql która stworzy nam tabele 
new const g_szTable[] = 
" \
	CREATE TABLE IF NOT EXISTS `zapis` \
	( \
		`SteamID` varchar(34) NOT NULL, \
		`Kille` int(20) NOT NULL DEFAULT '0', \
		`Deady` int(20) NOT NULL DEFAULT '0', \
		PRIMARY KEY (`SteamID`) \
	); \
"

dalej

public plugin_init()
{
	register_plugin("Zapis Sql", "1.0", "KTIVGames")
        register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0")
//cvary
	g_pCvarDB[Host] = register_cvar("plugin_host", "127.0.0.1")
	g_pCvarDB[User] = register_cvar("plugin_user", "root")
	g_pCvarDB[Pass] = register_cvar("plugin_pass", "password")
	g_pCvarDB[DB] = register_cvar("plugin_dbname", "levels_db")
// task od ładowanie sql

	set_task(0.1, "Delay_MySQL_Init")
	
} 
// kille i deady które przechwycimy i zapiszemy
public DeathMsg()
{
	new kid = read_data(1)	//zabojca
	
	new vid = read_data(2)	// ofiara

	kille[kid] +=1
	deady[vid] +=1
       //zapisanie danych gracza
       SaveData(vid)
       SaveData(kid)
}

public plugin_end()
{

	if (g_hTuple != Empty_Handle)
	{
		SQL_FreeHandle(g_hTuple)
	}
	
}

public Delay_MySQL_Init()
{
	MySQL_Init()
}
public MySQL_Init()
{

	//dane sql do cvara
	new szHost[64], szUser[32], szPass[32], szDB[128]
	
	get_pcvar_string(g_pCvarDB[Host], szHost, charsmax(szHost))
	get_pcvar_string(g_pCvarDB[User], szUser, charsmax(szUser))
	get_pcvar_string(g_pCvarDB[Pass], szPass, charsmax(szPass))
	get_pcvar_string(g_pCvarDB[DB], szDB, charsmax(szDB))
	
	g_hTuple = SQL_MakeDbTuple(szHost, szUser, szPass, szDB)
	

	new iErrorCode, szError[512], Handle:hSQLConnection
	
	hSQLConnection = SQL_Connect(g_hTuple, iErrorCode, szError, charsmax(szError))
	//sprawdzanei połączenia z sql
	if (hSQLConnection != Empty_Handle)
	{
		log_amx("[MySQL]Successfully connected to host: %s (ALL IS OK).", szHost)
		SQL_FreeHandle(hSQLConnection)
	}
	else
	{
		
		set_fail_state("Failed to connect to MySQL database: %s.", szError)
	}
	
	SQL_ThreadQuery(g_hTuple, "QueryCreateTable", g_szTable)
}
public QueryCreateTable(iFailState, Handle:hQuery, szError[], iError, szData[], iSize, Float:flQueueTime) 
{
	SQL_IsFail(iFailState, iError, szError, g_szLogFile)
}

wczytywanie danych oraz tworzenie nowych w przypadku nowego gracza

public client_putinserver(id)
{
	if(is_user_hltv(id) || is_user_bot(id))
		return
	
	
	set_task(1.0, "DelayLoad", id)

	
}

public DelayLoad(id)
{
	// Load his data
	LoadData(id)
}
public LoadData(id)
{
	new szAuthID[35]
	
	get_user_authid(id, szAuthID, charsmax(szAuthID))
	
	new szQuery[128], szData[5]
        // zapytanie wybranie tabeli z której dane zostaną wyciągnięte na podstawie SteamID
	formatex(szQuery, charsmax(szQuery), "SELECT * FROM `zapis` WHERE ( `SteamID` = '%s' );", szAuthID)
	
	num_to_str(id, szData, charsmax(szData))
	SQL_ThreadQuery(g_hTuple, "QuerySelectData", szQuery, szData, charsmax(szData))

}

public QuerySelectData(iFailState, Handle:hQuery, szError[], iError, szData[]) 
{
	if (SQL_IsFail(iFailState, iError, szError, g_szLogFile))
		return
	
	new id = str_to_num(szData)
	// gracz nie istnieje w tabeli więc zostanie utworzone dane z jego killami i dedami
	if(!SQL_NumResults(hQuery))
	{
	
		new szAuthID[35]
		get_user_authid(id, szAuthID, charsmax(szAuthID))
		
		
		new szQuery[128]  
                //zapytanie które tworzy nowy wpis z danymi
		formatex(szQuery, charsmax(szQuery), "INSERT INTO `zapis` (`SteamID`, `Kille`, `Deady`) VALUES ('%s', '%i', '%i');", szAuthID, kille[id],deady[id])
		SQL_ThreadQuery(g_hTuple, "QueryInsertData", szQuery)
		return
	}
        // wyciaganie killi i deadów gracza z tabeli
	new Kille_Column = SQL_FieldNameToNum(hQuery, "Kille")
	new Deady_Column = SQL_FieldNameToNum(hQuery, "Deady")
	

	kille[id] = SQL_ReadResult(hQuery, Kille_Column)
	deady[id] = SQL_ReadResult(hQuery, Deady_Column)
}

zapis do bazy 

public SaveData(id)
{
	new szAuthID[35], szName[32]
	get_user_authid(id, szAuthID, charsmax(szAuthID))
	get_user_name(id, szName, charsmax(szName))

	new szQuery[128]
        // zapytanie o zaktulizowanie danych gracza
	formatex(szQuery, charsmax(szQuery), "UPDATE `zapis` SET `Kille` = '%d', `Deady` = '%d' WHERE ( `SteamID` = '%s' );", kille[id], deady[id], szAuthID)
	SQL_ThreadQuery(g_hTuple, "QueryUpdateData", szQuery)

}

public QueryUpdateData(iFailState, Handle:hQuery, szError[], iError, szData[], iSize, Float:flQueueTime) 
{
	SQL_IsFail(iFailState, iError, szError, g_szLogFile)
}

i na końcu stock od wyświetlania errorów 
 

stock SQL_IsFail(iFailState, iError, szError[], const szLogFile[])
{
	if (iFailState == TQUERY_CONNECT_FAILED)
	{
		log_to_file(szLogFile, "[MySQL] Could not connect to SQL database: %s", szError)
		return true
	}
	else if (iFailState == TQUERY_QUERY_FAILED)
	{
		log_to_file(szLogFile, "[MySQL] Query failed: %s", szError)
		return true
	}
	else if (iError)
	{
		log_to_file(szLogFile, "[MySQL] Error on query: %s", szError)
		return true
	}
	
	return false
}

Przykład : Załączony plik  sql.sma   4,48 KB  44 Ilość pobrań
  sql.amxx


Poradnik napisany przezemnie  na podstawie pluginu  ze _levels_system (przerobiony) Załączony plik  ze_level_system.sma   16,16 KB  38 Ilość pobrań
  ze_level_system.amxx

[ROZWIĄZANE] Crasz Hunk_AllocName: failed on 12392 bytes

22.01.2023 16:46

witam serwer craszuje na niektórych mapach wcześniej one działały 

sewer na 1shot1kill

L 01/22/2023 - 16:29:52: FATAL ERROR (shutting down): Hunk_AllocName: failed on 12392 bytes
FATAL ERROR (shutting down): Hunk_AllocName: failed on 12392 bytes

pełny zrzut konsoli 

https://pastebin.com/5HqYDREh

plugins.ini

; AMX Mod X plugins

; Admin Base - Always one has to be activated
admin.amxx		; admin base (required for any admin-related)
;admin_sql.amxx		; admin base - SQL version (comment admin.amxx)

; Basic
admincmd.amxx		; basic admin console commands
adminhelp.amxx		; help command for admin console commands
adminslots.amxx		; slot reservation
multilingual.amxx	; Multi-Lingual management

; Menus
menufront.amxx		; front-end for admin menus
cmdmenu.amxx		; command menu (speech, settings)
plmenu.amxx		; players menu (kick, ban, client cmds.)
telemenu.amxx		; teleport menu (Fun Module required!)
mapsmenu.amxx		; maps menu (vote, changelevel)
pluginmenu.amxx		; Menus for commands/cvars organized by plugin

; Chat / Messages
adminchat.amxx		; console chat commands
antiflood.amxx		; prevent clients from chat-flooding the server
scrollmsg.amxx		; displays a scrolling message
imessage.amxx		; displays information messages
adminvote.amxx		; vote commands

; Map related
nextmap.amxx		; displays next map in mapcycle
mapchooser.amxx		; allows to vote for next map
timeleft.amxx		; displays time left on map

; Configuration
pausecfg.amxx		; allows to pause and unpause some plugins
statscfg.amxx		; allows to manage stats plugins via menu and commands

; Counter-Strike
;restmenu.amxx		; restrict weapons menu
;statsx.amxx		; stats on death or round end (CSX Module required!)
;miscstats.amxx		; bunch of events announcement for Counter-Strike
;stats_logging.amxx	; weapons stats logging (CSX Module required!)


; Custom - Add 3rd party plugins here
bullet_damage.amxx
walkguard.amxx
cs_weap_restrict_api.amxx
speedometer.amxx
PrecacheX.amxx
cords.amxx

plugins-zombie_escape

; Zombie Escape Mod v1.7
; Help/More: http://escapers-zone.net/

; Engine/Core
ze_core.amxx
ze_adminmenu.amxx
ze_vip_system.amxx
ze_level_system.amxx debug
ze_set_player_level.amxx
ze_levels_rank_top.amxx

//
ze_damage_control.amxx
ze_damage_system.amxx
ze_supplybox.amxx
ze_timereward.amxx
nademodes.amxx
ze_multijump.amxx
parachute.amxx
ze_vip_system.amxx
;infection.amxx
;escape.amxx
ze_break_message.amxx
ze_win_message.amxx
ze_best_defender.amxx
ze_best_infector.amxx
ze_prefixes.amxx
boss_kingpin.amxx
human_armor.amxx


;misje
ze_mission_core.amxx debug
ze_quest_test.amxx debug

; Setting API / Models
amx_settings_api.amxx
cs_weap_models_api.amxx

; Events/Messages Blocker
ze_block_events_messages.amxx debug

; Classes
ze_zombie_class.amxx
ze_class_nemesis.amxx
ze_classes.amxx
zc_hunter.amxx



; Gamemodes
ze_gamemodes.amxx debug
ze_gamemode_escape.amxx debug
ze_gamemode_nemesis.amxx
ze_gamemode_swarm.amxx

; Effects/Messages
ze_effects_frags.amxx
ze_effects_messages.amxx
ze_effects_weather.amxx
ze_nightvision_lighting.amxx

; Coins System
ze_coins_system.amxx debug
ze_escape_coins_donation.amxx

; HUD|DHUD
ze_hud_info.amxx

; Menu Main
ze_main_menu.amxx
ze_weapon_menu.amxx

; Items Manager
ze_items_manager.amxx
ze_items_limit.amxx
ze_items_escape_coins.amxx

; Knockback System
ze_knockback_system.amxx

; Long-Jump
ze_leap.amxx

; Grenades
ze_fire.amxx
ze_frost.amxx

; Mod Files (Resources)
ze_resources.amxx
ze_countdown.amxx
ze_zombie_sounds.amxx
;ze_special_models.amxx


; Extra Items: Humans
ze_extra_fire_nade.amxx
ze_extra_frost_nade.amxx
;zp_extra_pipe.amxx
ze_extra_balrog1.amxx
ze_nuke.amxx
M4A1_DarkKnight.amxx
AK47_Paladin.amxx
force_shield_grenade.amxx
Weapon_buffBaretta.amxx
plugin-laserfist.amxx



; Extra Items: Zombies
ze_extra_antifire.amxx
ze_extra_antifreeze.amxx
ze_madness.amxx
ze_extra_zombie_gromgrenade.amxx
t_virus.amxx


;Enable if needed
ze_items_level.amxx	;Level System needed.
ze_items_vip.amxx		;VIP System needed.

; ITEMS LEVEL
Weapon_Broad.amxx
CSO_PlasmaGun.amxx
mp.amxx
zp_extra_thanatos7.amxx
normal_brickpeacev2.amxx
ze_tornado.amxx
zp_extra_thanatos3.amxx
zp_extraitems_coilmg.amxx
Lycanthrope_CSO.amxx
CounterStrikeOnline_starchasersr.amxx
starchaserar.amxx
thunderForce.amxx
AMXX_ScarOzD.amxx
zp_hunter_killerx90.amxx
hunter_killerx15.amxx
stunrifleNORMAL.amxx
buffm95tig.amxx
inferno_cannon.amxx
z47_goldredcannonex_zp50.amxx
;weapon_tiamat_mk4.amxx

a w necie mało informacji na ten temat :/

 

[ROZWIĄZANE] plugin nie działa plugin file open error

05.01.2023 11:20

witam plugin nie chce działać  nie ładuje się wcale 0 errorów  tylko to wyskakuje 

L 01/05/2023 - 11:16:46: [AMXX] Plugin file open error (plugin "ze_block_events_messages.amx")

REHLDS version : 48/1.1.2.7/Stdio 3056 secure (10)
amx v1.8.3-dev+5169

#include <zombie_escape>

// Variables
new g_iFwSpawn

// Cvars
new g_pCvarBlockKillCmd, 
	g_pCvarBlockMoneyHUD, 
	g_pCvarBlockOtherHUD

public plugin_init()
{
	register_plugin("[ZE] Blocked Messages & Events", ZE_VERSION, AUTHORS)
	
	// Events.
	register_event("ResetHUD", "fw_ResetHUDs_Event", "b")

	// Block some messages
	register_message(get_user_msgid("TextMsg"), "Message_TextMsg")
	register_message(get_user_msgid("SendAudio"), "Message_SendAudio")
	
	// Fakemeta
	register_forward(FM_ClientKill, "Fw_ClientKill_Pre", 0)
	unregister_forward(FM_Spawn, g_iFwSpawn)
	
	// Hams
	RegisterHam(Ham_Touch, "weaponbox", "Fw_TouchWeaponBox_Pre", 0)
	RegisterHam(Ham_Touch, "armoury_entity", "Fw_TouchWeaponBox_Pre", 0)
	
	// Cvars
	g_pCvarBlockKillCmd = register_cvar("ze_block_kill", "1")
	g_pCvarBlockMoneyHUD = register_cvar("ze_block_money_hud", "1")
	g_pCvarBlockOtherHUD = register_cvar("ze_block_radar_ap_hp", "1")
}

public plugin_precache()
{
	// Prevent Entities from being spawned like (Rain, Snow, Fog) It's registered here as this called before plugin_init()
	g_iFwSpawn = register_forward(FM_Spawn, "Fw_Spawn")
}

// Forward called after init.
public plugin_cfg()
{
	// Block buyzone in Map.
	set_member_game(m_bTCantBuy, true)
	set_member_game(m_bCTCantBuy, true)
	set_member_game(m_bMapHasBuyZone, false)
}

public Message_TextMsg()
{
	new szMsg[22]
	get_msg_arg_string(2, szMsg, charsmax(szMsg))
	
	// Block round end related messages
	if (equal(szMsg, "#Hostages_Not_Rescued") || equal(szMsg, "#Round_Draw") || equal(szMsg, "#CTs_Win") || equal(szMsg, "#Terrorists_Win") || equal(szMsg, "#Game_will_restart_in") || equal(szMsg, "#Game_Commencing"))
		return PLUGIN_HANDLED
	
	return PLUGIN_CONTINUE
}

public Message_SendAudio()
{
	new szAudio[17]
	get_msg_arg_string(2, szAudio, charsmax(szAudio))
	
	// Block CS round win audio messages
	if (equal(szAudio[7], "terwin") || equal(szAudio[7], "ctwin") || equal(szAudio[7], "rounddraw"))
		return PLUGIN_HANDLED
	
	return PLUGIN_CONTINUE
}

public fw_ResetHUDs_Event(id)
{
	new iHideHUDs

	if (get_pcvar_num(g_pCvarBlockOtherHUD))
		iHideHUDs |= HIDEHUD_HEALTH
	
	if (get_pcvar_num(g_pCvarBlockMoneyHUD))
		iHideHUDs |= HIDEHUD_MONEY

	// Hide HUDs for player.
	set_member(id, m_iHideHUD, iHideHUDs)
}

public Fw_ClientKill_Pre(id)
{
	// Block Kill Command if enabled
	if (get_pcvar_num(g_pCvarBlockKillCmd))
		return FMRES_SUPERCEDE
	
	return PLUGIN_CONTINUE
}

public Fw_Spawn(iEnt)
{
	// Invalid entity
	if (!pev_valid(iEnt))
		return FMRES_IGNORED
	
	// Get classname
	new szClassName[32]
	get_entvar(iEnt, var_classname, szClassName, charsmax(szClassName))
	
	// Prevent All (Rain, Snow, Fog) From the original map, So we can add our Weather
	if (equal(szClassName, "env_rain") || equal(szClassName, "env_snow") || equal(szClassName, "env_fog"))
	{
		engfunc(EngFunc_RemoveEntity, iEnt)
		return FMRES_SUPERCEDE
	}
	
	return FMRES_IGNORED
}

public Fw_TouchWeaponBox_Pre(iWeaponBox, iIndex)
{
	if (!is_user_alive(iIndex))
		return HAM_IGNORED
	
	// Block Zombies From Pick UP Weapons
	if (ze_is_user_zombie(iIndex))
		return HAM_SUPERCEDE
	
	return HAM_IGNORED
}