Cũng tất cả chúng ta biết làm thế nào để tạo ra một hàm nhưng những gì về một hàm sử dụng số năng động của các thông số.
Tôi khuyên bạn nên không đọc nếu bạn không có kiến thức cơ bản kịch bản.
PHP Code:
public function_add(num1, num2, result)
{
result = num1 + num2 }
Vâng câu trả lời là đơn giản, bạn chỉ cần sử dụng các hàm này:
Ví dụ cho hàm mà chúng ta đã tạo ở trên chúng ta có thể làm một cái gì đó như thế này:
PHP Code:
public function_add( ... )
{
// Để đọc các tham số đầu tiên bạn phải luôn luôn sử dụng getarg (0) // Nó bắt đầu với 0
setarg(2, getarg(0)+getarg(1))
}
Điều đó có nghĩa rằng số lượng các thông số có thể thay đổi.
Đây có phải là chỉ giới hạn ở giá trị số nguyên?
Không bạn cũng có thể sao chép các vector, chuỗi, và các giá trị Float.
Đây là một ví dụ cơ bản
Float Ví dụ:
PHP Code:
public function_mean( ... )
{
// Bạn cần phải truyền qua hai tham số đầu tiên là giá trị float hoặc tính toán khác
// Sẽ được sai lầm
// Tham số thứ 3 là một số nguyên (giá trị bình thường)
setarg(2, floatround((Float:getarg(1)+Float:getarg(0)) / 2.0))
}
PHP Code:
// Chúng tôi nghĩ rằng chuỗi là tham số đầu tiênpublic function_copystring( ... )
{
// position là chỉ số cho phép chúng ta sao chép mỗi ô của chuỗi hoặc mảng
// len là chiều dài tối ta của chuỗi.
// string đại diện cho mảng nơi mà chúng ta lưu tin nhắn văn bản
// ch là kí tự, nơi mà chúng ta sẽ giữ giá trị ( tránh nhiều các cuộc gọi)
new position, ch, string[100], len
len = charsmax(string)
while ( (position < len) && (ch = getarg(0, position)) )
{
// Lưu trữ giá trị ch
string[position] = ch
// Tăng vị trí cho các ô tiếp theo để tải
position++;
}
// Chúng ta cần phải làm điều này vì để kết thúc một chuỗi
string[position] = '^0';
position++;
// Bây giờ chúng ta có chuỗi sao chép. Và in nó ra Server.
server_print(string)
}
Vâng ví dụ tôi sử dụng nó để tạo ra một cách để gửi tin nhắn văn bản dễ dàng hơn.
Đây là những gì hàm của tôi có:
PHP Code:
/* This function uses a different system of getting arguments see funcwiki for details
* Params:
* - id, player id
* - print_type (ex: print_chat, print_center, etc.)
* - string to send to player (ex: #Alias_Not_Avail)
* - the rest, more strings, see cstrike_english.txt to see how much strings you need in this message (you need to count the "%s" parts coresponding a tag)
*
* Return:
* - None.
*/
sendTxtMsg(any: ...)
{
new numstring = numargs() - 2
new string[100]
new pos, ch, totalchars = charsmax(string)
message_begin(MSG_ONE, get_user_msgid("TextMsg"), _, getarg(0))
write_byte(getarg(1))
for (new i=0; i < numstring; i++)
{
// Here we copy the sting that we want to send to a player
pos = 0;
while (pos < totalchars && (ch = getarg(2 + i, pos)))
{
string[pos++] = ch
}
// Add ending to the string (necessary)
string[pos++] = '^0';
//server_print("STRING %s", string)
// Send it!
write_string(string)
}
// End the function chain
message_end()
}
Ví dụ thay vì viết:
PHP Code:
message_begin(MSG_ONE, get_user_msgid("TextMsg"), _, id);
write_byte(print_center);
write_string("#Alias_Not_Avail");
write_string("Item");
message_end();
PHP Code:
sendTxtMsg(id, print_center, "#Alias_Not_Avail", "Item")
Ví dụ:
PHP Code:
// For "Cstrike_TitlesTXT_Game_radio"
// "%s1 (RADIO): %s2" sendTxtMsg(id, print_center, "#Cstrike_TitlesTXT_Game_radio", "Youpii", "Having fun mate!")
0 nhận xét:
Post a Comment